interview
cpp-basics
C++中struct和class的区别?

C++基础面试题, C++ 中 struct 和 class 的区别?

C++基础面试题, C++ 中 struct 和 class 的区别?

QA

Step 1

Q:: C++ 中 struct 和 class 的区别是什么?

A:: 在C++中,struct和class在语法上的唯一区别是默认的访问权限不同。在struct中,成员默认是public的,而在class中,成员默认是private的。除此之外,struct和class在C++中几乎完全相同,struct也可以包含成员函数、构造函数、析构函数、静态成员、友元等。

Step 2

Q:: 在什么时候会使用struct而不是class?

A:: 通常来说,如果你需要创建一个简单的数据结构,没有太多的行为(方法),如仅包含公共成员数据的集合,那么struct是一个合理的选择。例如定义点(Point)、颜色(Color)等简单的几何或配置结构。使用struct可以清晰地表达数据结构的意图。

Step 3

Q:: 为什么struct和class在C++中设计时有不同的默认访问权限?

A:: C++继承自C语言,而在C语言中,struct仅仅是一个包含数据成员的聚合体,没有访问权限的概念。为了保持向后兼容性,C++中的struct保留了public的默认访问权限。class则引入了更丰富的面向对象特性,因此默认设置为private,以更好地封装数据。

用途

这个内容的面试通常是为了考察应聘者对C`++基础语法和面向对象编程特性的理解。struct和class的区别虽然细微,但对理解C++`如何处理数据封装、继承和访问控制非常重要。在实际生产环境中,当设计数据结构或类时,开发者需要清楚地知道应该如何选择和使用这些特性,以编写出既清晰又安全的代码。例如,在设计API或模块化代码时,这些概念帮助开发者控制对数据的访问,从而提高代码的可维护性和安全性。\n

相关问题

🦆
C++ 中 struct 和 C 语言中的 struct 有什么区别?

C++中的struct可以包含成员函数、构造函数、析构函数、静态成员、友元等,而C语言中的struct只能包含数据成员。C++的struct是一个面向对象的扩展,而C语言的struct仅仅是一个数据结构。

🦆
什么时候应该使用public继承,什么时候应该使用private继承?

public继承表示子类是一个特殊的父类,即'是一个'关系,继承父类的接口和实现;private继承表示'有一个'关系,通常用于实现细节隐藏,在这种继承方式下,父类的public和protected成员在子类中变为private。

🦆
C++ 中的访问控制关键字 public, protected, private 有什么区别?

public成员可以被任何人访问,protected成员只能在类内及其子类中访问,private成员只能在类内访问。

🦆
C++ 中 struct 和 class 的多重继承是否有差别?

在C++中,struct和class的多重继承在语法和行为上没有区别,两者都可以继承多个基类,并且继承的方式可以是public、protected或private。

🦆
什么是C++中的虚继承?什么时候使用?

虚继承用于解决菱形继承问题,即当一个类从两个基类继承,而这两个基类又继承自同一个祖先类时,虚继承可以确保最终派生类只有一份祖先类的副本。