96SEO 2026-02-19 11:21 6
C类与对象的收尾工作初始化列表static成员友元内部类匿名对象和编译器优化问题。

在创建对象时编译器通过调用构造函数给对象中各个成员变量一个合适的初始值。
虽然上述构造函数调用之后对象中已经有了一个初始值但是不能将其称为对对象中成员变量的初始化构造函数体中的语句只能将其称为赋初值而不能称作初始化。
因为初始化只能初始
初始化列表以一个冒号开始接着是一个以逗号分隔的数据成员列表每个成员变量后面跟
1.每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)
引用成员变量const成员变量自定义类型成员(且该类没有默认构造函数时)
尽量使用初始化列表初始化因为不管你是否使用初始化列表对于自定义类型成员变量一定会先使用初始化列表初始化。
成员变量在类中声明次序就是其在初始化列表中的初始化顺序与其在初始化列表中的先后次序无关
1_a2是随机值在初始化列表初始化的时候由于定义的顺序是先是_a2后是_a1所以先用_a1初始化_a2因为_a1还没有初始化_a1初始化给_a2的是随机值随后又初始化了_a1的值为1.
构造函数不仅可以构造与初始化对象对于单个参数或者除第一个参数无默认值其余均有默认值
单参构造函数没有使用explicit修饰具有类型转换作用Date(int
虽然有多个参数但是创建对象时后两个参数可以不传递没有使用explicit修饰具//有类型转换作用//Date(int
单参构造函数没有使用explicit修饰具有类型转换作用explicit
虽然有多个参数但是创建对象时后两个参数可以不传递没有使用explicit修饰具//有类型转换作用//Date(int
声明为static的类成员称为类的静态成员用static修饰的成员变量称之为静态成员变量用
static修饰的成员函数称之为静态成员函数。
静态成员变量一定要在类外进行初始化。
分析创建一个类对象要么调用构造函数要么调用拷贝构造函数利用一个计数器统计调用构造函数和拷贝构造的次数就可以求出一共创建过多少个类对象.我们可以使用全局变量来计数也可以使用static静态成员变量来计数。
//静态成员变量必须在类外定义定义时不添加static关键字类中只是声明。
nullptr;//因为静态成员变量不属于对象我们通过空指针访问也不会有问题。
cout
静态成员变量必须在类外定义定义时不添加static关键字类中只是声明。
3.
静态成员也是类的成员受public、protected、private
如果我们手动添加对象指针参数是不是就可以了呢手动添加对象的指针参数不仅可以访问非静态的成员函数还可以访问非静态成员变量。
class
友元提供了一种突破封装的方式有时提供了便利。
但是友元会增加耦合度破坏了封装所以
我们之前尝试去重载operator然后发现没办法将operator重载成成员函数。
因为cout的
输出流对象和隐含的this指针在抢占第一个参数的位置。
this指针默认是第一个参数也就是左操作
数了。
但是实际使用中cout需要是第一个形参对象才能正常使用。
所以要将operator重载成
全局函数。
但又会导致类外没办法访问成员此时就需要友元来解决。
operator同理。
友元函数可以直接访问类的私有成员它是定义在类外部的普通函数不属于任何类但需要在
因为友元函数本身就是外部函数。
2.友元函数不能用const修饰。
因为友元函数是非成员函数是不可以用const修饰的因为const修饰的是*this。
3.友元函数可以在类定义的任何地方声明不受类访问限定符限制。
4.一个函数可以是多个类的友元函数。
5.友元函数的调用与普通函数的调用原理相同。
友元类的所有成员函数都可以是另一个类的友元函数都可以访问另一个类中的非公有成员。
//声明日期类为时间类的友元类则在日期类中就直接访问Time类中的私有成员变量
1.友元关系是单向的不具有交换性。
比如上述Time类和Date类在Time类中声明Date类为其友元类那么可以在Date类中直接访问Time类的私有成员变量但想在Time类中访问Date类中私有的成员变量则不行。
B是A的友元则不能说明C时A的友元。
3.友元关系不能继承在继承位置再给大家详细介绍。
概念如果一个类定义在另一个类的内部这个内部类就叫做内部类。
内部类是一个独立的类它不属于外部类更不能通过外部类的对象去访问内部类的成员。
外部类对内部类没有任何优越的访问权限。
注意内部类就是外部类的友元类参见友元类的定义内部类可以通过外部类的对象参数来访
说明这里的a类中的h为啥是0因为我们并没有对A类型进行实例化所以此时的类a中的h也就相当于是一个全局变量。
全局变量在没有初始化的时候默认是0.
内部类可以定义在外部类的public、protected、private都是可以的。
注意内部类可以直接访问外部类中的static成员不需要外部类的对象/类名。
sizeof(外部类)外部类和内部类没有任何关系。
匿名对象在这样场景下就很好用当然还有一些其他使用场景这个我们以后遇到了再说
下面我们针对在拷贝的时候编译器的优化情况我们这里的编译器优化主要是VS2022。
在传参和传返回值的过程中一般编译器会做一些优化减少对象的拷贝这个在一些场景下还
现实生活中的实体计算机并不认识计算机只认识二进制格式的数据。
如果想要让计算机认识现
实生活中的实体用户必须通过某种面向对象的语言对实体进行描述然后通过编写程序创
建对象后计算机才可以认识。
比如想要让计算机认识洗衣机就需要1.
用户先要对现实中洗衣机实体进行抽象---即在人为思想层面对洗衣机进行认识洗衣机有什么属性有那些功能即对洗衣机进行抽象认知的一个过程。
2.
经过1之后在人的头脑中已经对洗衣机有了一个清醒的认识只不过此时计算机还不清楚想要让计算机识别人想象中的洗衣机就需要人通过某种面相对象的语言(比如C、Java、Python等)将洗衣机用类来进行描述并输入到计算机中。
3.
经过2之后在计算机中就有了一个洗衣机类但是洗衣机类只是站在计算机的角度对洗衣机对象进行描述的通过洗衣机类可以实例化出一个个具体的洗衣机对象此时计算机才能洗衣机是什么东西。
4.
在类和对象阶段大家一定要体会到类是对某一类实体(对象)来进行描述的描述该对象具有那
些属性那些方法描述完成后就形成了一种新的自定义类型才用该自定义类型就可以实例化
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback