news 2026/5/1 11:19:14

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/4/30 16:34:55

创作纪念日——满一年了

前言 时间是真的快呢&#xff0c;去年这个时候写的第一篇博客&#xff0c;AI基础数学之——掌握中学基础数学——学习脑图说明&#xff0c;今年就满满的一年了&#xff0c;真的就是一瞬间的事情&#xff0c;时间太快了&#xff0c;快的让自己真的很不舒服&#xff0c;年龄也随…

作者头像 李华
网站建设 2026/5/1 6:17:23

<span class=“js_title_inner“>为什么芯片项目需要Makefile?</span>

从RTL到最终流片&#xff0c;中间有几十个工具、上百个步骤。前仿真、后仿真、形式验证、CDC检查、Lint、综合、布局布线、时序分析、功耗分析…每个环节都有一套复杂的命令&#xff0c;每次运行都要敲一长串参数。没有Makefile的项目&#xff0c;就是一座手工作坊。验证阶段&a…

作者头像 李华