news 2026/4/28 15:35:21

C++面向对象:类与对象核心解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++面向对象:类与对象核心解析

一、上期回顾

C 面向过程、C++ 面向对象;C++ 新增:命名空间、cin/coutnew/delete、权限控制。今天正式进入C++ 面向对象核心:类与对象


二、类与对象核心概念

  1. 类(class):抽象模板,描述事物属性与行为
  2. 对象:类的实例,实实在在开辟内存
  3. 访问权限
  • private:私有,仅类内访问(默认)
  • public:公有,外部可直接访问
  • protected:保护,继承场景使用

核心思想:数据封装成员变量私有,对外只提供公开接口,保证数据安全。


三、最简类定义示范

#include <iostream> using namespace std; class Person { // 私有成员 private: int age; // 公开接口 public: // 成员函数 void setAge(int a) { age = a; } void show() { cout << "age = " << age << endl; } }; int main() { // 实例化对象 Person p; p.setAge(20); p.show(); // 错误:age 是 private 无法直接访问 // p.age = 18; return 0; }

四、构造函数

作用

对象创建时自动调用,负责初始化成员。

特点

  1. 函数名与类名完全相同
  2. 无返回值
  3. 可重载
  4. 不写则编译器提供默认无参构造

1. 无参构造

class Person { private: int age; public: // 无参构造 Person() { age = 0; cout << "无参构造执行" << endl; } };

2. 有参构造

Person(int a) { age = a; cout << "有参构造执行" << endl; }

3. 初始化列表(推荐写法)

效率更高,直接初始化,不先创建再赋值:

Person(int a) : age(a) { }

五、析构函数

作用

对象销毁时自动调用,释放堆内存、关闭资源。

特点

  1. 名前加~
  2. 无参、无返回、不能重载
  3. 编译器会提供默认析构
class Person { public: // 析构函数 ~Person() { cout << "析构函数执行" << endl; } };

栈对象:出作用域自动析构堆对象:delete时触发析构


六、拷贝构造函数

触发场景

已有对象初始化新对象时自动调用。

格式

类名(const 类名& 旧对象)

class Person { private: int age; public: Person(int a) : age(a) {} // 拷贝构造 Person(const Person& other) { age = other.age; cout << "拷贝构造执行" << endl; } void show() { cout << age << endl; } }; int main() { Person p1(18); Person p2 = p1; // 触发拷贝构造 p2.show(); return 0; }

默认拷贝构造

编译器默认提供浅拷贝:逐字节赋值。后续深度讲解:浅拷贝 与 深拷贝 内存坑。


七、this 指针

  1. 每一个成员函数隐含this指针
  2. 指向当前调用的对象
  3. 解决成员变量与局部变量重名
void setAge(int age) { this->age = age; }

八、完整整合代码

#include <iostream> using namespace std; class Person { private: int age; public: // 无参构造 Person() : age(0) { cout << "无参构造" << endl; } // 有参构造 Person(int a) : age(a) { cout << "有参构造" << endl; } // 拷贝构造 Person(const Person& p) { this->age = p.age; cout << "拷贝构造" << endl; } // 析构 ~Person() { cout << "析构函数" << endl; } void show() { cout << "age = " << age << endl; } }; int main() { Person p1; Person p2(22); Person p3 = p2; p1.show(); p2.show(); p3.show(); return 0; }

九、今日核心总结

  1. 类是模板,对象是实例;private 保护数据
  2. 构造:创建对象初始化
  3. 析构:销毁对象释放资源
  4. 拷贝构造:对象赋值初始化触发
  5. this指针代表当前对象

十、课后练习

  1. 自定义 Student 类,包含:姓名、学号
  2. 手写:无参构造、有参构造、拷贝构造、析构
  3. 利用this指针解决变量名冲突
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 15:32:25

ComfyUI-Impact-Pack V8完全指南:模块化架构深度解析与实战应用

ComfyUI-Impact-Pack V8完全指南&#xff1a;模块化架构深度解析与实战应用 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址:…

作者头像 李华
网站建设 2026/4/28 15:32:23

GHelper终极指南:5个步骤让你的华硕笔记本性能翻倍

GHelper终极指南&#xff1a;5个步骤让你的华硕笔记本性能翻倍 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar,…

作者头像 李华
网站建设 2026/4/28 15:32:23

Testing Weekly | 测试行业每周资讯-第 02 期 | 2026-04-27

&#x1f916; 自动化测试 | Automation Testing 本周动态 | This Week’s Highlights SmartBear 推出 BearQ — 全新 Agentic QA 系统&#xff0c;包含 Explorer/QA Lead/Tester 三类代理协作&#xff0c;实现端到端测试规划与执行。OpenText AQM 26.1 — 发布 off-cloud AI…

作者头像 李华
网站建设 2026/4/28 15:29:24

3分钟掌握猫抓浏览器扩展:网页媒体下载与M3U8解析的终极指南

3分钟掌握猫抓浏览器扩展&#xff1a;网页媒体下载与M3U8解析的终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾为无法下载网页视…

作者头像 李华
网站建设 2026/4/28 15:28:29

终极Win11优化指南:使用Win11Debloat工具提升50%系统性能

终极Win11优化指南&#xff1a;使用Win11Debloat工具提升50%系统性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and…

作者头像 李华
网站建设 2026/4/28 15:28:24

5大优势解析:Parsec VDD开源虚拟显示器驱动技术深度指南

5大优势解析&#xff1a;Parsec VDD开源虚拟显示器驱动技术深度指南 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd Parsec VDD&#xff08;Virtual Display Driver&#xff09;是…

作者头像 李华