C++ 面向对象面试题, C++ 中 struct 和 class 的区别?
C++ 面向对象面试题, C++ 中 struct 和 class 的区别?
QA
Step 1
Q:: C++
中 struct 和 class 的区别?
A:: 在C++
中,struct和class有以下主要区别:
1.
默认访问控制:struct的成员默认是public的,而class的成员默认是private的。
2.
继承:struct的默认继承访问控制是public的,而class的默认继承访问控制是private的。
3.
用途:struct一般用于定义数据结构,而class则更倾向于定义对象及其行为。
除此之外,struct和class在C++
中本质上是相同的,二者都可以有成员函数、构造函数、析构函数、访问控制、继承、多态等特性。
Step 2
Q:: C++
中 struct 和 class 可以互相替代吗?
A:: 在大多数情况下,struct和class是可以互相替代的,因为它们在语法和功能上几乎完全相同。唯一需要注意的是它们的默认访问控制和继承访问控制。在设计数据结构时,更推荐使用struct,而在设计具有行为的对象时,更推荐使用class。
Step 3
Q:: C++
中为什么要区分 struct 和 class?
A:: 区分struct和class主要是为了编程的清晰性和语义化。使用struct可以明确表示这是一个简单的数据结构,而使用class可以表示这是一个包含数据和行为的复杂对象。这种区分有助于代码的可读性和维护性。
Step 4
Q:: 如何在 C++
中实现 struct 和 class 的继承?
A:: 在C++
中,struct和class都支持继承。继承的语法是相同的,只是默认的访问控制不同。例子:
struct BaseStruct {
int value;
};
struct DerivedStruct : public BaseStruct {
void setValue(int val) { value = val; }
};
class BaseClass {
private:
int value;
public:
void setValue(int val) { value = val; }
};
class DerivedClass : public BaseClass {
void display() { std::cout << value << std::endl; }
};
在上述代码中,BaseStruct的成员默认是public的,而BaseClass的成员默认是private的。
Step 5
Q:: 在 C++
中 struct 和 class 的使用场景有哪些?
A:: 在C++
中,struct通常用于以下场景:
1. 定义简单的数据结构,例如点(Point)、矩形(Rectangle)
等。
2.
用于数据传递,尤其是在需要与C语言兼容的情况下。
class通常用于以下场景:
1. 定义复杂的对象,包含数据和行为,例如用户(User)、订单(Order)
等。
2.
设计模式的实现,例如单例模式、工厂模式等。
3.
实现多态性和继承关系。
用途
面试这个内容是为了考察候选人对C`++`语言基本概念的理解,特别是面向对象编程的基础知识。在实际生产环境中,struct和class的选择会直接影响代码的可读性、可维护性以及与其他代码的兼容性。了解二者的区别和适用场景能够帮助开发人员写出更加清晰、简洁和高效的代码。\n相关问题
C++ 基础面试题, C++ 中 struct 和 class 的区别?
QA
Step 1
Q:: C++
中 struct 和 class 的区别是什么?
A:: 在 C++
中,struct 和 class 的主要区别在于默认的访问控制权限不同。在 struct 中,成员的默认访问控制权限是 public,而在 class 中,成员的默认访问控制权限是 private。这意味着在使用 struct 时,如果你没有明确指定成员的访问控制权限,它们将是公有的,而在使用 class 时,成员则默认是私有的。除此之外,struct 和 class 还可以分别包含成员函数、继承、构造函数和析构函数等功能,二者在功能上几乎是等价的。
Step 2
Q:: 如何选择使用 struct 还是 class?
A:: 选择 struct 或 class 主要取决于语义和约定。通常情况下,当你定义一个主要包含数据成员且所有成员都应该公开访问的简单数据结构时,使用 struct 更为合适。而当你定义的类型包含复杂的功能或需要严格控制成员访问权限时,class 会是更好的选择。
Step 3
Q:: C++
中 struct 和 class 的继承方式有何不同?
A:: 在 C++
中,struct 和 class 的继承方式的主要区别也是在于默认的访问控制权限。当使用 struct 继承时,继承的基类成员的默认访问权限为 public,而使用 class 继承时,继承的基类成员默认访问权限为 private。
Step 4
Q:: C++
中 struct 能包含成员函数吗?
A:: 是的,C++
中的 struct 可以包含成员函数。实际上,struct 和 class 在语法上几乎是等价的,struct 可以包含成员变量、成员函数、构造函数、析构函数以及其他所有 class 所能包含的特性。