C++面向对象三大特性是封装、继承和多态。1. 封装通过访问控制隐藏数据,提供安全接口;2. 继承使子类复用并扩展父类成员;3. 多态通过虚函数实现同一接口不同行为,提升程序灵活性。
C++面向对象的三大特性是封装、继承和多态。这三种机制构成了面向对象编程的核心,帮助开发者构建模块化、可复用、易维护的代码结构。下面结合具体代码实例逐一讲解。
封装是指将数据(成员变量)和操作数据的方法(成员函数)绑定在一起,并通过访问控制(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; }};
// 使用示例 int main() { Person p; p.setName("小明"); p.setAge(20); p.introduce(); // 输出:我是小明,今年20岁。 return 0; }
这样外部无法直接访问name和age,必须通过安全的方法操作,提高了数据的安全性和可控性。
继承允许一个类(子类)获取另一个类(父类)的属性和方法,实现代码复用。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;
}};
int main() {
Student s;
s.setName("小红");
s.setAge(19);
s.study(); // 输出:小红正在学习。
return 0;
}
Student继承了Person的所有公共成员,同时可以扩展自己的属性和行为。
多态是指同一个接口在不同对象上表现出不同的行为。C++中通过虚函数(virtual function)和基类指针实现运行时多态。
定义一个基类Animal,并让其子类Dog和Cat重写同一函数:
class Animal {
public:
virtual void makeSound() {
cout << "动物发出声音" << endl;
}
virtual ~Animal() {} // 虚析构函数};
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++面向对象编程更强大。
# ai
# c++
# ios
# stream
# 面向对象编程
# 代码复用
# 面向对象
# 封装
# 多态
# 成员变量
# 成员函数
# 父类
# 子类
# int
# void
# 指针
# 继承
# 多继承
# 虚函数
# 接口
# class
# public
# private
# protected
# function
# 对象
# 复用
# 我是
# 是指
# 三大
# 重写
# 小明
# 小红
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Windows10系统怎么查看CPU核心数_Win10逻辑处理器数量查看
Win11局域网共享怎么设置 Win11文件夹网络共享教程【详解】
Windows11怎么自定义任务栏_Windows11任务栏自定义教程【步骤】
Win11怎么关闭开机声音_Win11系统启动提示音静音【教程】
如何在JavaScript中动态拼接PHP的base_url与前端变量
如何使用Golang sort排序切片_Golang sort排序方法示例
c++如何获取map中所有的键_C++遍历键值对提取所有key的方法
Win11怎么开启游戏模式_Win11优化游戏帧数性能【教程】
Win10如何更改任务栏高度_Windows10解锁任务栏调整大小
Win10如何更改电脑休眠时间_Windows10电源和睡眠选项调整
MAC如何修改默认应用程序_MAC文件后缀关联设置与打开方式更改【教程】
php怎么下载安装后无法解析php文件_服务器配置检查【解答】
Mac上的iMovie如何剪辑视频?(新手入门教程)
Win10任务栏天气和资讯怎么关闭 Win10禁用新闻和兴趣功能【教程】
使用类变量定义字符串常量时的类型安全最佳实践
Python装饰器复用技巧_通用能力解析【教程】
如何使用Golang配置安全开发环境_防止敏感信息泄露
Win11怎么开启上帝模式_创建Windows 11 God Mode全能文件夹【技巧】
Win10如何卸载Skype_Win10卸载Skype步骤【步骤】
Win10怎么卸载金山毒霸_Win10彻底卸载金山毒霸方法【步骤】
Python文件管理规范_工程实践说明【指导】
PHP的FastAdmin架构适合二次开发吗_特点分析【介绍】
Win10怎样卸载iTunes_Win10卸载iTunes步骤【步骤】
用Python构建微服务架构实践_FastAPI与Django对比详解
Win11怎么设置任务栏对齐方式_Windows11个性化任务栏行为
PythonGIL机制理解_多线程限制解析【教程】
Mac怎么进行语音输入_Mac听写功能设置与使用【教程】
Windows10系统怎么查看CPU温度_Win10性能监视器查看硬件数据
如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例
如何在Golang中捕获HTTP服务器错误_GolangHTTP Handler中error处理
如何使用Golang实现多重错误处理_Golangerror组合与判断方法
Django 测试数据库表缺失与字段未创建问题的完整解决方案
c# 如何用c#实现一个支持优先级的任务队列
Win10怎么创建桌面快捷方式 Win10为应用创建快捷方式【步骤】
Win11怎么设置组合键快捷方式_Windows11自定义快捷键操作
Go 中实现 Python urllib.quote() 等效功能的正确方式
本地php环境出现502错误_nginx或apache502badgateway解决技巧【解答】
如何在Golang中使用log包输出不同级别日志_Golang log日志管理与分类
如何在Golang中编写异步函数测试_Golang异步操作测试策略
windows如何备份注册表_windows导出和导入注册表文件教程
Python文件操作优化_大文件与流处理解析【教程】
Win11怎么设置开机自动连接宽带_Windows11创建拨号连接计划任务
php嵌入式需要什么环境_搭建php+linux嵌入式开发环境【详解】
Win11怎么关闭透明效果_Windows11个性化颜色关闭透明
Win11怎么关闭系统声音_Win11系统提示音静音设置【详解】
Python模块的__name__属性如何由导入方式决定?
Win11资源管理器卡顿怎么办 Win11文件资源管理器重启技巧【优化】
用lighttpd能运行php吗_lighttpd配置php步骤【教程】
Mac如何将HEIC图片格式转为JPG_Mac批量转换图片【指南】
VSC里PHP变量未定义报错怎么解决_错误抑制技巧【解答】
2025-12-30
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。