新闻详情

新闻详情

首页 / 资讯中心 / 详情

【C++】 类与对象 (三)(补充内容)

发布时间:2026/9/28 3:41:46来源:尧图网络
【C++】 类与对象 (三)(补充内容)
目录类型转换static 静态成员友元friend内部类匿名对象类型转换在原本的C语言中可以支持相对的类型的转换整形转换浮点型等C 内置了一个类型隐式转换对象但需要有内置类型为参数的构造函数补充构造函数如果在前面加上了explicit就不再支持隐式类型转换。类类型的对象之间也可以隐式转换需要相应的构造函数支持。class a { public: a(int x, int y) : _a1(x),_a2(y) {} a (int x) :_a1(x) {} int Get() const { return _a1 _a2; } private: int _a11; int _a21; }; class b { public: b(const a aa) : _b(aa.Get()) { } private: int _b0; }; int main() { a aa11; const a aa2 1; a aa3 { 2,2 }; b bb1 aa3;//类型转换 const b bb2aa3; return 0; }explicit 的作用static 静态成员一、核心本质不属于某个对象属于整个类普通成员每个对象独立一份拷贝 static 成员全类共享唯一一份内存不管创建多少对象、不创建对象都存在。存储位置全局静态存储区不在栈 / 堆程序启动分配、结束释放。二、静态成员变量 static 变量1. 声明与定义分离类内只是声明不分配内存类外必须初始化定义分配内存#include iostream using namespace std; class Person { public: int a; // 普通成员每个对象一份 static int num; // 静态成员 声明 }; // 类外初始化必须写 int Person::num 0; int main() { Person p1; Person p2; p1.num 100; cout p2.num endl; // 输出100共享同一份数据 // 无对象也能访问 cout Person::num endl; return 0; }2. 访问方式通过类名类名::静态变量推荐无对象也能用通过对象对象.静态变量/对象指针-静态变量3. 特殊const static 整型整型静态常量可类内直接初始化不用类外定义class A { public: const static int size 100; // int/short/char 允许类内赋值 // const static double pi 3.14; // 浮点不行仍要类外定义 };三、静态成员函数 static 函数1. 核心规则函数属于类无this指针关键区别普通成员函数只能访问静态成员静态变量 / 静态函数不能访问普通成员没有 this 拿不到对象普通变量同样支持 类名函数 () / 对象。函数 () 调用class Person { public: static int num; int age; // 静态函数 static void showStatic() { cout num endl; // ✅ 可以访问静态变量 // cout age; ❌ 报错无this不能访问普通成员 } void show() { cout num age; // 普通函数可以访问静态变量 } }; int Person::num 10; int main() { Person::showStatic(); // 无需创建对象直接调用 Person p; p.showStatic(); return 0; }2. 静态函数没有 this 指针原因this 是调用函数时传入当前对象地址静态函数不绑定任何对象不存在 this。四、static 成员的特点总结生命周期程序全程存在早于所有对象销毁晚于所有对象内存全类唯一多个对象共用一份初始化静态变量类外初始化const static int 除外静态函数限制仅操作静态成员无 this适用场景统计对象总数static count构造 、析构 --全局共享常量 / 配置工具函数无需实例化就能调用五、常见易错点忘记类外初始化 static 变量 → 链接报错静态函数读写普通成员变量 → 编译报错企图用this在静态函数内操作数据 → 报错误以为 static 成员随对象创建销毁 → 静态成员独立于对象存在友元friendprivate 等私有性不可访问的成员程序员不希望被别人访问但是极个别可以访问就设置了一个友元friend意思是其他人都不可以使用我的私有我指名道姓只能由他来访问我私有的空间。切记友元具有单向性。a-b不等于b-a;内部类定义定义在另一个类内部的类外层叫外部类内层是内部类。访问权限内部类能直接访问外部类所有成员包括 private外部类想访问内部类成员必须创建内部类对象。分类成员内部类外部类成员位置定义依赖外部类实例创建。静态内部类static 嵌套类加 static不依赖外部对象只能访问外部静态成员。局部内部类写在方法里仅当前方法可用。匿名内部类无类名用于快速重写方法。作用封装从属关系、实现多继承、简化回调 / 接口实现。友元关系内部类可以访问私有部分外部类外部类无法访问私有部分内部类匿名对象概括用完就释放没有变量名、临时生成、用完立刻销毁的对象。 语法类名(参数)class A{}; A(); // 匿名对象 A(10); // 带参匿名对象核心特点生命周期极短本行语句执行完马上析构释放。只适用于一次性使用不需要反复调用对象。可以直接调用成员函数A().func();两种特殊接收规则用普通对象接收匿名对象会拷贝构造匿名对象销毁变量留存A a A();用const 引用接收匿名对象延长生命周期到引用失效常用const A ref A();使用场景函数传参临时构造不定义变量函数返回值临时对象返回匿名只调用一次成员方法省去命名易错点// 不是匿名对象是函数声明 A a();
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

99.【扩展】 KMP算法原理和代码详解 2026/9/28 6:35:18

99.【扩展】 KMP算法原理和代码详解

本文的网课内容学习自B站左程云老师的算法详解课程,旨在对其中的知识进行整理和分享~ 网课链接:算法讲解100【扩展】 KMP算法原理和代码详解_哔哩哔哩_bilibili 一.KMP算法模板 题目: 找出字符串中第一个匹配项的下标 算法原理 整体原理 KMP…

阅读更多 →
YOLO钢筋检测实战:从dataset_reinforcing.rar到工地落地 2026/9/28 6:35:12

YOLO钢筋检测实战:从dataset_reinforcing.rar到工地落地

简介:本资源是面向计算机视觉初学者与建筑智能化开发者的一套YOLO钢筋检测专用数据集,聚焦于解决建筑工程中钢筋识别与定位的自动化需求。压缩包共751个文件,含250张JPG格式现场钢筋图像、250份PASCAL VOC标准XML标注(含完整尺寸、…

阅读更多 →
牛奶生产线设备选型全解析:从工段流程到CIP清洗的完整指南 2026/9/28 6:35:12

牛奶生产线设备选型全解析:从工段流程到CIP清洗的完整指南

月初有个做牧场的朋友拉着一份报价单来找我,开口就问:“这三条线的设备清单差别这么大,我到底该按哪个配?”我看了一眼清单,就知道问题出在哪儿了——他手里拿的是别人按“整厂交钥匙”打包配置的牛奶全套加工设备&…

阅读更多 →
SQL性能优化:UNION与UNION ALL的区别、使用场景及慢查询排查实战 2026/9/28 6:35:11

SQL性能优化:UNION与UNION ALL的区别、使用场景及慢查询排查实战

做了这么多年数据开发和报表优化,我几乎每天都要和UNION ALL打交道。但说实话,真正能把UNION ALL讲清楚、用得明白的人并不多。大多数初学者要么不敢用,要么乱用,最常见的情况是把UNION和UNION ALL混为一谈,等到线上慢…

阅读更多 →
OPC UA设备数据采集实战:Socket实时推送与MySQL存储 2026/9/28 6:35:11

OPC UA设备数据采集实战:Socket实时推送与MySQL存储

PLC、CNC、仪表这些工业设备的数据,要拉出来给上位机、MES、数据库用,绕不开OPC UA这个协议。最近在调一个项目,就是用OPC UA Client把设备实时数据读出来,然后分别通过Socket推给实时监控端、写进MySQL做历史存储,顺手…

阅读更多 →
KubeVela 中使用 alibaba-ack 组件申请阿里云 ACK 集群:Terraform 组件定义与连接信息传递实战 2026/9/28 6:35:11

KubeVela 中使用 alibaba-ack 组件申请阿里云 ACK 集群:Terraform 组件定义与连接信息传递实战

云原生DevOps运维微服务 【免费下载链接】kubevela The Modern Application Platform. 项目地址: https://gitcode.com/gh_mirrors/ku/kubevela 点击查看 免费下载 KubeVela 通过内置的 alibaba-ack 云服务组件,让开发者可以用一份声明式的 Application…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉