c/c++--struct对比 目录C struct的使用1.1 默认访问控制Access Control1.2. 继承权限Inheritance Access1.3. 构造函数、析构函数、成员函数2. 与c语言的对比C语言中的区别在C/C中struct结构体和class类都是用来创建自定义数据类型的关键字但是也有许多不同之处C struct的使用在复习之前首先将struct的功能与class进行一下对比差异1.1默认访问控制Access Controlstruct成员默认是public的。也就是说在结构体中声明的变量和方法是可以被外部代码直接访问的。class成员默认是private的。也就是说在类中声明的变量和方法默认只能在类的内部访问外部代码无法直接访问。struct MyStruct { int x; // 默认是 public }; class MyClass { int x; // 默认是 private };1.2.继承权限Inheritance Accessstruct默认继承权限为public。也就是说继承自结构体时基类的成员会是public。class默认继承权限为private。也就是说继承自类时基类的成员会是private。struct BaseStruct { int x; }; struct DerivedStruct : BaseStruct { // 默认 public 继承 void print() { std::cout x std::endl; // 可以访问基类成员 } }; class BaseClass { int x; }; class DerivedClass : BaseClass { // 默认 private 继承 void print() { // std::cout x std::endl; // 编译错误x 是 private } };1.3.构造函数、析构函数、成员函数struct在C中struct和class都可以有构造函数、析构函数和成员函数。没有语言上的限制。class和struct一样class也支持构造函数、析构函数、成员函数。struct MyStruct { int x; MyStruct(int val) : x(val) {} // 构造函数 ~MyStruct() {} // 析构函数 void display() { std::cout x std::endl; } // 成员函数 }; class MyClass { int x; public: MyClass(int val) : x(val) {} // 构造函数 ~MyClass() {} // 析构函数 void display() { std::cout x std::endl; } // 成员函数 };2. 与c语言的对比C语言中的区别struct在C语言中struct是唯一的方式来定义复合数据类型。C语言中没有class关键字因此类的概念在C中是没有的。C语言中的struct可以包含成员变量但不能包含方法函数。c语言不能定义静态成员变量