news 2026/3/28 15:27:32

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/3/22 2:49:47

基于Java的影视创作论坛的设计与实现(11880)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华
网站建设 2026/3/13 23:49:51

uni-app 之 设置导航

uni-app 提供了一系列 API 来动态设置页面导航栏的样式和状态&#xff0c;帮助开发者创建更丰富的用户界面体验。 1. uni.setNavigationBarTitle(OBJECT) 动态设置当前页面的标题 参数说明 属性类型必填说明titlestring是页面标题successfunction否接口调用成功的回调函数f…

作者头像 李华
网站建设 2026/3/22 3:42:54

光刻胶用屏蔽剂

一、光刻胶对光屏蔽剂性能的具体详细要求光屏蔽剂的核心作用是控制光在光刻胶膜中的传播行为&#xff0c;其主要性能要求可归纳为以下几点&#xff1a;精确的光学特性&#xff08;核心要求&#xff09;在曝光波长下具有高吸收系数&#xff08;α&#xff09;&#xff1a;这是最…

作者头像 李华
网站建设 2026/3/27 14:24:50

<span class=“js_title_inner“>1篇搞懂AI通识:大白话拆解核心点</span>

引言随着 AI 技术从实验室走向日常&#xff0c;“机器学习”“大模型”“Transformer”“MOE” 等词汇已不再是技术圈的专属。从智能聊天助手到电商推荐&#xff0c;从语音识别到自动驾驶&#xff0c;AI 正以多元形态融入生活。这篇文章按 “基础→核心→优化→落地→工具→术语…

作者头像 李华