C++面向对象三大特性是封装、继承和多态。1. 封装通过访问控制隐藏数据,提供安全接口;2. 继承使子类复用并扩展父类成员;3. 多态通过虚函数实现同一接口不同行为,提升程序灵活性。

C++面向对象的三大特性是封装、继承和多态。这三种机制构成了面向对象编程的核心,帮助开发者构建模块化、可复用、易维护的代码结构。下面结合具体代码实例逐一讲解。
1. 封装(Encapsulation)
封装是指将数据(成员变量)和操作数据的方法(成员函数)绑定在一起,并通过访问控制(public、private、protected)隐藏对象的内部实现细节,仅暴露必要的接口。
例如,定义一个Person类,将姓名和年龄设为私有成员,通过公共方法进行访问和修改:
#include#include using namespace std; class Person { private: string name; int age;
public: void setName(string n) { name = n; }
void setAge(int a) { if (a > 0) age = a; } string getName() { return name; } int getAge() { return age; } void introduce() { cout zuojiankuohaophpcnzuojiankuohaophpcn "我是" zuojiankuohaophpcnzuojiankuohaophpcn name zuojiankuohaophpcnzuojiankuohaophpcn ",今年" zuojiankuohaophpcnzuojiankuohaophpcn age zuojiankuohaophpcnzuojiankuohaophpcn "岁。" zuojiankuohaophpcnzuojiankuohaophpcn endl; }};
立即学习“C++免费学习笔记(深入)”;
// 使用示例 int main() { Person p; p.setName("小明"); p.setAge(20); p.introduce(); // 输出:我是小明,今年20岁。 return 0; }
这样外部无法直接访问name和age,必须通过安全的方法操作,提高了数据的安全性和可控性。
2. 继承(Inheritance)
继承允许一个类(子类)获取另一个类(父类)的属性和方法,实现代码复用。C++支持单继承和多继承。
比如,从Person派生出Student类:
class Student : public Person {
private:
string studentId;
public:
void setStudentId(string id) {
studentId = id;
}
void study() {
cout zuojiankuohaophpcnzuojiankuohaophpcn getName() zuojiankuohaophpcnzuojiankuohaophpcn "正在学习。" zuojiankuohaophpcnzuojiankuohaophpcn endl;
}};
立即学习“C++免费学习笔记(深入)”;
int main() {
Student s;
s.setName("小红");
s.setAge(19);
s.study(); // 输出:小红正在学习。
return 0;
}
Student继承了Person的所有公共成员,同时可以扩展自己的属性和行为。
3. 多态(Polymorphism)
多态是指同一个接口在不同对象上表现出不同的行为。C++中通过虚函数(virtual function)和基类指针实现运行时多态。
定义一个基类Animal,并让其子类Dog和Cat重写同一函数:
class Animal {
public:
virtual void makeSound() {
cout << "动物发出声音" << endl;
}
virtual ~Animal() {} // 虚析构函数};
立即学习“C++免费学习笔记(深入)”;
class Dog : public Animal {
public:
void makeSound() override {
cout
class Cat : public Animal {
public:
void makeSound() override {
cout
int main() {
Animal a1 = new Dog();
Animal a2 = new Cat();
a1-youjiankuohaophpcnmakeSound(); // 输出:汪汪!
a2-youjiankuohaophpcnmakeSound(); // 输出:喵喵!
delete a1;
delete a2;
return 0;
}
通过基类指针调用makeSound(),实际执行的是子类重写的版本,这就是多态的体现。
基本上就这些。封装保护数据,继承实现复用,多态提升灵活性,三者结合让C++面向对象编程更强大。










