struct默认public,class默认private;2. struct继承默认public,class继承默认private;3. 习惯上struct用于数据聚合,class用于行为封装;4. 其余特性完全相同。
在C++中,struct 和 class 几乎是完全相同的,它们都支持成员变量、成员函数、构造函数、析构函数、继承、多态等面向对象特性。唯
一的本质区别在于默认访问权限和默认继承方式。
这是最核心的区别:
例如:
struct MyStruct {上面代码中,MyStruct 的 x 可以直接访问,而 MyClass 的 x 不能从外部直接访问。
当使用继承时,如果没有显式指定继承方式:
示例:
struct Base { };虽然语法上可以互换,但程序员通常根据用途选择:
这种选择更多是编码风格的体现,不影响功能。
无论是 struct 还是 class:
也就是说,你完全可以把一个 class 改成 struct(调整访问权限后),程序行为不变。
基本上就这些。区别很小,关键看默认访问控制和团队编码规范。