正常用实现定义一个结构体,初始化成员信息,再输出成员信息,可以如下这样实现。
#include <iostream>
#include <string>
using namespace std;
struct person {
string name;
int age;
};
void setvalue(person& shuaige, string name, int age) {
shuaige.name = name;
shuaige.age = age;
}
void show(struct person & shuaige) {
cout << "姓名: " << shuaige.name << ", 年龄:" << shuaige.age << endl;
}
int main() {
person zhongjiaming;
setvalue(zhongjiaming,"钟佳铭", 19);
show(zhongjiaming);
return 0;
}
接下来我把这两个函数改为结构体的成员函数:
#include <iostream>
#include <string>
using namespace std;
struct person {
string name;
int age;
void show(struct person& shuaige) {
cout << "姓名: " << shuaige.name << ", 年龄:" << shuaige.age << endl;
}
};
void setvalue(person& shuaige, string name, int age) {
shuaige.name = name;
shuaige.age = age;
}
int main() {
person zhongjiaming;
setvalue(zhongjiaming,"钟佳铭", 19);
zhongjiaming.show(zhongjiaming);
return 0;
}
结构体成员函数还有一个特点:可以直接在成员函数中访问成员变量,这样这个成员show函数就用不着传参数了。
#include <iostream>
#include <string>
using namespace std;
struct person {
string name;
int age;
void show() {
cout << "姓名: " << name << ", 年龄:" << age << endl;
}
};
void setvalue(person& shuaige, string name, int age) {
shuaige.name = name;
shuaige.age = age;
}
int main() {
person zhongjiaming;
zhongjiaming.setvalue(zhongjiaming,"钟佳铭", 19);
zhongjiaming.show(zhongjiaming);
return 0;
}
再把setvalue函数也改为结构体的成员函数。
#include <iostream>
#include <string>
using namespace std;
struct person {
string name;
int age;
void show() {
cout << "姓名: " << name << ", 年龄:" << age << endl;
}
void setvalue(string name1, int age1) {
name = name1;
age = age1;
}
};
int main() {
person zhongjiaming;
zhongjiaming.setvalue( "钟佳铭", 19);
zhongjiaming.show();
return 0;
}
如上是从函数的封装到结构体的封装,其实就是在结构体中加入了成员函数,成员函数的特点是可以直接访问结构体成员变量。
在C++里结构体就是类,吧定义结构体的关键字改为class,在大括号的第一行加上public:
如下这个玩意就完完全全是类了。
#include <iostream>
#include <string>
using namespace std;
class person
{public:
string name;
int age;
void show() {
cout << "姓名: " << name << ", 年龄:" << age << endl;
}
void setvalue(string name1, int age1) {
name = name1;
age = age1;
}
};
int main() {
person zhongjiaming;
zhongjiaming.setvalue("钟佳铭", 19);
zhongjiaming.show();
return 0;
}
类的成员函数也可以定义在类的的外面:
在类中只用写这个函数的声明就行;
在函数名前面加上类名还有俩冒号。
#include <iostream>
#include <string>
using namespace std;
class person
{public:
string name;
int age;
void setvalue(string name1, int age1);
void show() {
cout << "姓名: " << name << ", 年龄:" << age << endl;
}
};
void person::setvalue(string name1, int age1) {
name = name1;
age = age1;
}
int main() {
person zhongjiaming;
zhongjiaming.setvalue("钟佳铭", 19);
zhongjiaming.show();
return 0;
}