1. C++面向对象编程的核心概念
面向对象编程(OOP)是C++区别于C语言的重要特性,也是面试中必考的重点内容。在实际开发中,OOP不仅是一种编程范式,更是一种思维方式。让我们从最基础的概念开始,逐步深入理解C++面向对象的精髓。
1.1 类与对象的关系
类(Class)是C++中实现面向对象编程的基本单元,它是对现实世界中具有相同属性和行为的一类事物的抽象描述。而对象(Object)则是类的具体实例。
cpp复制class Car { // 类定义
private:
string brand; // 成员变量
int maxSpeed;
public:
void accelerate() { // 成员方法
cout << "Accelerating..." << endl;
}
};
Car myCar; // 创建对象
这里的关键理解是:类就像蓝图,对象是根据蓝图建造的房子。一个类可以创建多个对象,就像一张蓝图可以建造多栋房子。在实际面试中,面试官经常会问:"类和结构体(struct)有什么区别?" 答案是:在C++中,它们本质相同,唯一的区别是默认访问权限(class默认private,struct默认public)。
1.2 面向对象的三大特性
1.2.1 封装(Encapsulation)
封装是将数据(成员变量)和操作数据的方法(成员函数)捆绑在一起的机制。通过访问修饰符(public、private、protected)控制对类成员的访问级别。
提示:良好的封装习惯是将所有数据成员设为private,只通过public方法提供访问接口。这被称为"信息隐藏",是设计健壮类的基础。
1.2.2 继承(Inheritance)
继承允许我们基于已有类创建新类,新类继承了父类的特性,并可以添加自己的特性。C++支持多种继承方式:
cpp复制class Vehicle { /*...*/ };
// 单继承
class Car : public Vehicle { /*...*/ };
// 多继承(谨慎使用)
class AmphibiousCar : public Car, public Boat { /*...*/ };
面试中常问的问题包括:"public继承、protected继承和private继承有什么区别?"、"菱形继承问题如何解决?"(通过虚继承)。
1.2.3 多态(Polymorphism)
多态分为编译时多态(函数重载、运算符重载、模板)和运行时多态(虚函数)。运行时多态是面试重点:
cpp复制class Shape {
public:
virtual void draw() = 0; // 纯虚函数
};
class Circle : public Shape {
public:
void draw() override { cout << "Drawing circle" << endl; }
};
关键点:虚函数表(vtable)的实现机制、override关键字的作用、纯虚函数与抽象类的关系。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 构造函数与析构函数深度解析
2.1 构造函数的各种形式
构造函数是类初始化时自动调用的特殊成员函数。常见形式包括:
cp复制
