class和struct的区别
在 C++ 中,class
和 struct
的本质几乎是一样的,区别主要体现在默认访问权限 和 继承方式 上:
✅ 面试答题模板:“class 与 struct 的区别?”
🌟 答案核心(简洁版):
C++ 中
class
和struct
的唯一区别在于:
struct
的默认成员访问权限是 public;class
的默认成员访问权限是 private;其他方面,包括成员函数、继承、多态、构造析构函数等,功能完全一致。
🧠 对比总结:
特性 | struct | class |
---|---|---|
默认成员访问权限 | public | private |
默认继承权限 | public | private |
支持成员函数 | ✅ 支持 | ✅ 支持 |
支持构造/析构函数 | ✅ 支持 | ✅ 支持 |
支持继承/虚函数/多态 | ✅ 支持 | ✅ 支持 |
一般使用场景 | 数据结构(类似 C) | 封装、类设计 |
📌 示例代码:
struct MyStruct {int x; // 默认 publicvoid show(); // 默认 public
};class MyClass {int x; // 默认 private
public:void show(); // 明确 public
};
🧠 延伸理解(适合高级面试):
-
在 C++ 中,
struct
不再像 C 中那样只能用于被动的数据结构,它也能拥有构造函数、析构函数、运算符重载、虚函数等完整的面向对象特性; -
因此,使用
class
还是struct
更多是风格和语义约定:- 用
struct
表示纯数据对象(如 POD 类型); - 用
class
表示封装行为的对象。
- 用
💡 面试建议:
可以这样回答:“在 C++ 中,
class
和struct
在语法功能上几乎一致,唯一的区别是默认访问权限不同。一般约定使用struct
表示数据结构、class
表示带封装和行为的类。”