0

0

C++面向对象三大特性是什么_C++封装继承多态代码实战

冰火之心

冰火之心

发布时间:2025-12-30 16:14:02

|

998人浏览过

|

来源于php中文网

原创

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

c++面向对象三大特性是什么_c++封装继承多态代码实战

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++免费学习笔记(深入)”;

HaiSnap
HaiSnap

一站式AI应用开发和部署工具

下载

// 使用示例 int main() { Person p; p.setName("小明"); p.setAge(20); p.introduce(); // 输出:我是小明,今年20岁。 return 0; }

这样外部无法直接访问nameage,必须通过安全的方法操作,提高了数据的安全性和可控性。

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,并让其子类DogCat重写同一函数:

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++面向对象编程更强大。

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

54

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

46

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

14

2025.11.27

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

312

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

520

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

48

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

188

2025.08.29

javascriptvoid(o)怎么解决
javascriptvoid(o)怎么解决

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

173

2023.11.23

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号