news 2026/2/7 1:36:03

C++面向对象进阶精要

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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; };

总结

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 0:20:29

Python性能优化:深入原理与高阶实践

Python性能优化&#xff1a;深入原理与高阶实践 引言&#xff1a;超越表面优化的思考 在Python开发领域&#xff0c;"性能优化"常被简化为使用列表推导式、选择合适的数据结构等基础技巧。然而&#xff0c;真正的性能优化需要深入理解CPython实现原理、内存管理机制…

作者头像 李华
网站建设 2026/2/3 7:57:45

如何实现CAD明细表和序号同步修改?

在CAD机械版绘制装配图时&#xff0c;手动逐一调整明细表与序号的对应关系既繁琐又易出错。通过启用内置的深度关联设置&#xff0c;即可实现一改双动&#xff0c;其关联的序号均会自动同步更新&#xff0c;使图文保持一致&#xff0c;显著提升设计效率和图纸规范性。接下俩&am…

作者头像 李华
网站建设 2026/2/7 0:51:33

Vue—— Vue3 + Node.js 后台管理系统 之 【错误处理与监控】

背景问题 在生产环境中&#xff0c;错误处理和监控是保证应用稳定性的重要环节。 方案思考 如何统一错误处理如何收集错误信息如何上报错误日志 具体实现 错误处理系统&#xff1a; // utils/errorHandler.ts - 错误处理系统 import { App } from vue;// 错误类型定义 in…

作者头像 李华
网站建设 2026/2/6 19:48:32

<span class=“js_title_inner“>软硬协同、自主可控!先临三维SHINING3D Inspect全新工业计量三维检测软件赋能智能制造</span>

近日&#xff0c;先临三维正式推出SHINING3D Inspect工业计量三维检测软件&#xff0c;以自主知识产权为根基&#xff0c;以国际顶尖精度认证为背书&#xff0c;以全场景应用适配为特色&#xff0c;为工业计量领域注入强劲的国产创新力量。这款软件的发布&#xff0c;不仅标志着…

作者头像 李华
网站建设 2026/2/5 19:46:16

Python 异步上下文管理器深度解析:从 `with` 到 `async with` 的进化之旅

Python 异步上下文管理器深度解析:从 with 到 async with 的进化之旅 开篇:当资源管理遇上异步编程 还记得第一次接触 Python 的 with 语句时的惊喜吗?那种优雅地管理文件、数据库连接等资源的方式,让我们告别了繁琐的 try-finally 代码块。然而,当异步编程浪潮席卷而来…

作者头像 李华