当前位置: 首页 > news >正文

C++面向对象进阶精要

好的,这是关于 C++ 类与对象的进阶笔记:


C++ 类与对象进阶笔记

1. 构造函数与析构函数
  • 构造函数:在创建对象时自动调用,用于初始化对象成员。
    • 默认构造函数:无参或所有参数都有默认值的构造函数。
    • 拷贝构造函数:用同类型对象初始化新对象,形式为类名(const 类名& obj)
    • 初始化列表:高效初始化成员变量,语法:
      class MyClass { public: MyClass(int a, double b) : x(a), y(b) {} private: int x; double y; };
  • 析构函数:对象销毁时自动调用,用于释放资源(如内存、文件句柄),形式为~类名()

2. 静态成员
  • 静态成员变量:属于类而非对象,所有对象共享同一份数据,需在类外初始化:
    class Counter { public: static int count; // 声明 }; int Counter::count = 0; // 初始化
  • 静态成员函数:只能访问静态成员,无this指针:
    class Math { public: static double square(double x) { return x * x; } };

3. 友元
  • 友元函数:非成员函数可访问类的私有成员:
    class Box { private: double width; public: friend void printWidth(Box box); // 友元声明 }; void printWidth(Box box) { cout << box.width; // 直接访问私有成员 }
  • 友元类:一个类的成员函数可访问另一个类的私有成员:
    class A { friend class B; // B 是 A 的友元类 };

4. 运算符重载
  • 通过成员函数或全局函数重载运算符(如+,==):
    class Vector { public: Vector operator+(const Vector& v) { return Vector(x + v.x, y + v.y); } private: int x, y; };

5. 继承与多态
  • 继承:派生类继承基类成员,语法:
    class Derived : public Base { ... };
  • 虚函数:支持运行时多态,通过virtual声明:
    class Shape { public: virtual void draw() { cout << "Drawing Shape"; } }; class Circle : public Shape { public: void draw() override { cout << "Drawing Circle"; } };

6. 深拷贝与浅拷贝
  • 浅拷贝:默认拷贝构造函数仅复制指针地址(指向同一内存)。
  • 深拷贝:需自定义拷贝构造函数,复制指针指向的内容:
    class String { public: String(const String& s) { data = new char[strlen(s.data) + 1]; strcpy(data, s.data); } private: char* data; };

总结

掌握构造函数/析构函数、静态成员、友元、运算符重载、继承与多态等进阶特性,能更灵活地设计面向对象程序。深拷贝与浅拷贝的区别是资源管理的关键点,需特别注意。

http://www.jsqmd.com/news/336121/

相关文章:

  • Python性能优化:深入原理与高阶实践
  • Delphi的override和virtual方法
  • <span class=“js_title_inner“>Agentic Coding实战:让Doubao-Seed-Code深度剖析并改造你的代码库</span>
  • C++继承机制全解析
  • ag-ui agent 用户交互协议
  • 求职攻略:纽约的量化岗位在哪里投递?(高效申请指南) - 品牌排行榜
  • 2026年知名的深圳专业开锁换锁/深圳无损开锁换锁信誉优质供应参考(可靠) - 行业平台推荐
  • 详细介绍:数据结构第三章:单链表的学习
  • 2026年核心知识库部署服务商全景推荐:从企业知识管理到AI智能方案,Deepseek专家级服务商深度解析 - 品牌2025
  • AI没有“恻隐之心”,只有“效率至上”
  • 企业智能化升级必备:2026年度AI知识库部署方案商权威指南,私有化部署专家精选推荐 - 品牌2025
  • 大模型正在反向收割互联网红利
  • 大腿肌肉酸痛吃保健品哪个品牌好?口碑品牌盘点(选购必看) - 品牌排行榜
  • <span class=“js_title_inner“>今年 AI 到底在 “吵“ 什么?带好这份攻略,明天现场找答案!</span>
  • Deepseek生态深度合作:2026年企业知识库部署专业服务商实力盘点,定制化解决方案全解析 - 品牌2025
  • 【Java SE 基础学习打卡】03 计算机中数据的表示、存储与处理 - 指南
  • 数据决策新时代:2026年企业智能BI私有化部署厂商综合评估,本地化部署方案商优选指南 - 品牌2025
  • 工业触摸屏:Infineon (前Cypress) TrueTouch™ / PSoC™ CapSense™ 触摸控制器详细介绍
  • 工业触摸屏:FocalTech (敦泰科技) FT系列触摸屏控制器详细介绍
  • 安全与自主可控:2026年BI本地私有化部署厂商专业推荐,从方案设计到落地实施全流程服务商 - 品牌2025
  • 如何将CAD对象指定到机械图层?
  • 2026适合零基础的健身教练培训学校哪里找? - 品牌2025
  • 基于java的社区物资购买系统(11877)
  • 基于Java的水产品网站系统设计与实现(11878)
  • 如何实现CAD明细表和序号同步修改?
  • 番茄小说下载器 2026.02.01 | 一键批量下载番茄小说,支持多种格式及封面嵌入
  • 基于java的校园疫情管理系统(11879)
  • 基于Java的影视创作论坛的设计与实现(11880)
  • 你的电视 2.3.4 | 空壳直播软件,支持多个线路,附4个直播源
  • 基于SSM的医药管理系统(11876)