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

C++面向对象的三大特性是封装、继承和多态。这三种机制构成了面向对象编程的核心,帮助开发者构建模块化、可复用、易维护的代码结构。下面结合具体代码实例逐一讲解。
1. 封装(Encapsulation)
封装是指将数据(成员变量)和操作数据的方法(成员函数)绑定在一起,并通过访问控制(public、private、protected)隐藏对象的内部实现细节,仅暴露必要的接口。
例如,定义一个Person类,将姓名和年龄设为私有成员,通过公共方法进行访问和修改:
#include <iostream>
#include <string>
using namespace std;
<p>class Person {
private:
string name;
int age;</p><p>public:
void setName(string n) {
name = n;
}</p><pre class='brush:php;toolbar:false;'>void setAge(int a) {
if (a > 0) age = a;
}
string getName() {
return name;
}
int getAge() {
return age;
}
void introduce() {
cout << "我是" << name << ",今年" << age << "岁。" << 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;
<p>public:
void setStudentId(string id) {
studentId = id;
}</p><pre class='brush:php;toolbar:false;'>void study() {
cout << getName() << "正在学习。" << 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;
}
<pre class='brush:php;toolbar:false;'>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->makeSound(); // 输出:汪汪! a2->makeSound(); // 输出:喵喵! delete a1; delete a2; return 0;
}
通过基类指针调用makeSound(),实际执行的是子类重写的版本,这就是多态的体现。
基本上就这些。封装保护数据,继承实现复用,多态提升灵活性,三者结合让C++面向对象编程更强大。










