Struct(结构体) C和C++区别
-
c语言中,结构体是不允许有函数的,但是在c++中可以;
如下,c++中结构体:
cstruct PetInfo { string name; // Pet name string type; // Pet type int age; // Pet age CostInfo cost; PetInfo() // Default constructor { name = "unknown"; type = "unknown"; age = 0; cost.food = cost.medical = cost.license = cost.misc = 0.00; } };
-
c语言中结构体不能继承,但是c++可以继承;
如下,结构体B继承结构体A:
cstruct B : public A//结构B继承A { int c; B(int a,int b,int c); virtual ~B(); virtual void Display(void); friend istream& operator >>(istream& in,struct B &b); friend ostream& operator <<(ostream& out,struct B &b); };
-
c语言中结构体的使用必须要用别名或者使用struct;
如下:
cstruct student { int age; int num; int sex; }; struct sutdent stu; 或者 typedef struct student { int age; int num; int sex; } stu;
-
c语言中默认是共有的,不可以修改权限,在c++中权限是可以修改的。
-
c语言中不可以初始化数据成员,c++中可以初始化
如下:
cstruct Employee { string name; // 员工姓名 int vacationDays, // 允许的年假 daysUsed; //已使用的年假天数 Employee (string n ="",int d = 0) // 构造函数 { name = n; vacationDays = 10; daysUsed = d; } };
-
c语言中空结构体大小为0,c++中空结构体为1。