单独赋值方式为:
#include <iostream>
using namespace std;
struct man{
int height;
int weight;
};
int main(){
man jack;
jack.height = 175;
jack.weight = 120;
cout << jack.height <<"," << jack.weight;
return 0;
}
当我们使用括号赋值方式时
构造函数的名称需要注意,它会影响你可以合法创建结构体的方式。如果构造函数名称与结构体名称相同,此时man这个结构体名称成为了一个函数,创建时就必须要给它赋值,否则编译器会因为认为你传入的参数不对(这里一开始我是这样理解的,但随着深入研究,我发现C++的结构体完全可以视作一个类了。我们知道,构造一个类时,如果这个类的构造函数有参数,那么你必须在构造这个类时传入参数)而报错;
构造函数与结构体名称相同的好处是我们可以在创建时就直接同时赋值(一条语句):
#include <iostream>
using namespace std;
struct man{
int height;
int weight;
man(int h, int w){ height = h; weight = w; }
};
int main(){
man jack(175,120);
cout << jack.height <<"," << jack.weight;
}
如果构造函数名称与结构体名称不同,man仍然可以用作创建结构体的数据类型声明,构造函数(或者称之为结构体的方法吧)可以在之后对结构体的值进行修改,当然你也可以单独修改:
#include <iostream>
using namespace std;
struct man{
int height;
int weight;
change(int h, int w){ height = h; weight = w; }
};
int main(){
man jack;
cout << jack.height <<"," << jack.weight;
cout << endl;
jack.change(170, 110);
cout << jack.height <<"," << jack.weight;
cout << endl;
jack.height = 175;
jack.weight = 120;
cout << jack.height <<"," << jack.weight;
cout << endl;
return 0;
}
括号赋值方式赋值更方便快捷。
总结一点,C++的结构体基本可以当做无法设置public、private等权限的类来使用了。所以,当我们不需要设置权限时,写结构体来代替类更方便。