1.17、class与struct的区别

默认成员访问权限

  • • struct的成员默认是public,即未显式指定访问权限时,成员对外公开。
  • • class的成员默认是private,即未显式指定访问权限时,成员对外不可见。

默认继承权限

  • • struct继承时默认是public继承。
  • • class继承时默认是private继承。

除此之外,classstruct在语法和功能上没有区别,都可以定义构造函数、析构函数、成员函数、静态成员、模板参数等。C++保留struct关键字主要是为了与C语言兼容,使得简单的数据结构(POD类型)可以无缝使用,同时也在代码风格上通过structclass的选择传递不同的设计意图:

设计意图和代码风格

  • • 通常用struct表示简单的数据聚合体,主要用于存储数据,成员通常是公开的,行为简单。
  • • 用class表示具有封装性、复杂行为和私有成员的对象,强调面向对象的封装和抽象。

面试回答示例

面试中回答此问题时,可以说:
在C++中,structclass的唯一区别是默认的访问权限和继承权限:struct成员和继承默认是public,而class默认是private。除此之外,两者功能完全相同。通常struct用于表示简单的数据结构,class用于封装复杂行为和数据。C++保留struct关键字主要是为了兼容C语言,保证简单数据结构的无缝使用。
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
(加入我的知识星球,免费获取账号,解锁所有文章。)

阅读剩余
THE END