1. 默认访问修饰符
类(class
):
-
默认访问方式是私有的(
private
)。如果没有指定访问修饰符,则类的成员(数据成员和成员函数)默认为私有的(private
)。-
class MyClass { int x; // 默认为 private };
结构体(
struct
): -
默认访问修饰是公有的(
public
)。如果没有指定访问修饰符,则结构体的成员默认为公有的(public
)。struct MyStruct { int x; // 默认为 public };
2. 继承的默认访问方式
-
类(
class
):-
默认继承方式是私有继承(
private
)。如果没有指定继承方式,则从基类继承的成员默认为私有继承(private
)。class AA {}; class BB : AA {}; // 默认为 private 继承
结构体(
struct
): -
默认继承方式是公有继承(
public
)。如果没有指定继承方式,则从基类继承的成员公有继承(public
)。struct AA {}; struct BB : AA {}; // 默认为 public 继承
3. 用途和习惯
-
类(
class
):- 通常用于实现复杂的对象,强调封装、继承和多态等面向对象的特性。类的设计通常考虑了数据隐藏和安全性。
-
结构体(
struct
):- 通常用于表示简单的数据结构,习惯上用于存储一组相关的数据成员而不需要封装行为。结构体的设计更倾向于数据聚合,而不是封装复杂的逻辑.
-
-
4. 成员函数
-
类(
class
):-
可以包含成员函数,包括构造函数、析构函数、重载运算符等。成员函数通常用于操作类的数据成员。
-
-
结构体(
struct
):-
也可以包含成员函数,但传统上结构体更侧重于数据成员。现代 C++ 中的结构体也可以包含成员函数,像类一样。
-
总结
- 默认访问修饰符:
class
的默认访问控制是private
,而struct
的默认访问控制是public
。 - 默认继承方式:
class
的默认继承方式是private
,而struct
的默认继承方式是public
。 - 用途:
class
通常用于实现复杂的面向对象设计,而struct
通常用于简单的数据结构。
尽管有这些区别,C++ 允许 struct
和 class
互换使用,并且在现代 C++ 编程中,结构体和类的界限变得越来越模糊。实际上,你可以使用 struct
作为类的替代品,特别是当你需要一个简单的数据结构时。