//17结构体与类的区别 //我们知道结构体是C时代的产物,到了C++之后结构体有了很大的变化,可以增加函数,可以设置成员的公有,私有和保护属性,可以从别的类继承,也可以被别的类继承,可以有虚函数据 //唯一与类不同之处的地方是,结构体的成员默认是public,而类的成员默认是private. /* #include <iostream> #include <string> using namespace std; //由于结构体的这种默认公有属性,我们一般用来保存多个数据类型,比如说 //我们要保存一个人的姓名,性别,年龄,身高和体重 struct A { //public: int get(){ return x;} void set(int i){ x=i;} private: int x; }; struct people { people(int t_age, double t_weight, double t_tall, string t_name, string t_native, bool t_sex); int age; double weight; double tall; //char*name; //char*native; string name; string native; bool sex; }; people::people(int t_age, double t_weight, double t_tall, string t_name, string t_native, bool t_sex) { age = t_age; weight = t_weight; tall = t_tall; name = t_name; native = t_native; sex = t_sex; } void checkSex(bool s) { if(s == 1) cout<<"男"<<endl; else cout<<"女"<<endl; } int main() { //A a; //a.set(11); //cout<<a.get()<<endl; //people Jack; //people数据类型的变量Jack //Jack.weight = 150; //cout<<Jack.weight<<endl; //people Jack = { 34,179.3, 185.5, "xiangling","中国",1}; //用构造函数进行结构体的初始化,在VC6.0以前的版本需要这样才能在struct中使用string类型 people Jack(34,179.3, 185.5, "xiangling","中国",1); cout<<"姓名:"<<Jack.name<<endl; cout<<"年龄:"<<Jack.age<<endl; cout<<Jack.native<<endl; checkSex(Jack.sex); cout<<Jack.tall<<endl; cout<<Jack.weight<<endl; //在这个程序中,我们使用了构造函数对string型字符串进行赋值,由于调用的是构造函数 //所以jack后面没有加赋值运算符(=),并且用小括号替代了大括号 return 0; } */