理解C++中的构造函数如何影响对象初始化

构造函数进阶

初始化列表是构造函数中初始化成员变量的高效方式,语法以冒号开始,后跟逗号分隔的成员变量列表,每个变量后跟括号内的初始值或表达式。

引用成员变量、const成员变量以及没有默认构造函数的类类型变量必须在初始化列表中进行初始化,否则会导致编译错误。引用和const变量在定义时必须初始化,构造函数体内只能赋值,无法重新绑定引用或修改const变量。

C++11支持在成员变量声明时提供缺省值,这些缺省值主要用于未在初始化列表中显式初始化的成员变量。内置类型的初始化依赖于编译器,自定义类型成员会调用其默认构造函数。

初始化列表中成员变量的初始化顺序与其在类中的声明顺序一致,与初始化列表中的顺序无关。建议保持声明顺序和初始化列表顺序一致以提高代码可读性。

类型转换

C++支持内置类型隐式转换为类类型对象,前提是类中有接受相关内置类型参数的构造函数。在构造函数前添加explicit关键字可以禁止隐式类型转换。

类类型对象之间也可以进行隐式转换,需要相应的构造函数支持。构造函数在此类类型转换中起到桥梁作用。编译器会对构造和拷贝构造连续发生的场景进行优化,直接构造目标对象。

static成员

静态成员变量使用static修饰,必须在类外初始化,被所有类对象共享,存储在静态区而非对象中。静态成员函数没有this指针,只能访问其他静态成员,不能访问非静态成员。

非静态成员函数可以访问任意静态成员变量和函数。静态成员可通过类名或对象访问,但仍受访问限定符限制。静态成员变量不能在声明位置初始化,因为其不属于任何对象,不走构造函数初始化列表。

友元

友元提供了一种突破类访问限定符限制的方式,分为友元函数和友元类。友元函数可以访问类的私有和保护成员,但不是类的成员函数。友元声明不受访问限定符限制。

友元类是单向关系,不具有交换性和传递性。友元类中的所有成员函数都可以访问另一个类的私有和保护成员。过度使用友元会增加耦合度,破坏封装性。

内部类

内部类是定义在另一个类内部的独立类,受外部类类域和访问限定符限制。内部类默认是外部类的友元类,外部类对象不包含内部类。

内部类适用于紧密关联的类设计,特别是当某个类主要为另一个类服务时,可以将其设计为内部类。放在privateprotected位置的内部类将成为外部类的专属类,其他地方无法使用。

编程语言C++www.share.tailixy.com++C语言的魅力

编程语言C++m.www.tailixy.com++C语言的魅力

编程语言C++m.share.tailixy.com++C语言的魅力

编程语言C++www.blog.tailixy.com++C语言的魅力

编程语言C++read.share.tailixy.com++C语言的魅力

编程语言C++www.share.hengyuanna.com++C语言的魅力

编程语言C++m.www.hengyuanna.com++C语言的魅力

编程语言C++m.share.hengyuanna.com++C语言的魅力

编程语言C++www.blog.hengyuanna.com++C语言的魅力

编程语言C++read.share.hengyuanna.com++C语言的魅力

编程语言C++xc2035.com++C语言的魅力

编程语言C++www.xc2035.com++C语言的魅力

编程语言C++www.share.xc2035.com++C语言的魅力

编程语言C++m.www.xc2035.com++C语言的魅力

编程语言C++m.share.xc2035.com++C语言的魅力

编程语言C++www.blog.xc2035.com++C语言的魅力

编程语言C++read.share.xc2035.com++C语言的魅力

编程语言C++haopgz.com++C语言的魅力

编程语言C++www.haopgz.com++C语言的魅力

编程语言C++www.share.haopgz.com++C语言的魅力

编程语言C++m.www.haopgz.com++C语言的魅力

编程语言C++hengyuanna.com++C语言的魅力

编程语言C++www.hengyuanna.com++C语言的魅力

编程语言C++m.share.haopgz.com++C语言的魅力

编程语言C++www.blog.haopgz.com++C语言的魅力

编程语言C++tailixy.com++C语言的魅力

编程语言C++www.tailixy.com++C语言的魅力

编程语言C++read.share.haopgz.com++C语言的魅力

编程语言C++anonymouslodge.com++C语言的魅力

编程语言C++www.anonymouslodge.com++C语言的魅力

编程语言C++www.share.anonymouslodge.com++C语言的魅力

编程语言C++m.www.anonymouslodge.com++C语言的魅力

编程语言C++m.share.anonymouslodge.com++C语言的魅力

编程语言C++www.blog.anonymouslodge.com++C语言的魅力

编程语言C++read.share.anonymouslodge.com++C语言的魅力

编程语言C++zasw1688.com++C语言的魅力

编程语言C++www.zasw1688.com++C语言的魅力

编程语言C++www.share.zasw1688.com++C语言的魅力

编程语言C++m.www.zasw1688.com++C语言的魅力

编程语言C++m.share.zasw1688.com++C语言的魅力

编程语言C++www.blog.zasw1688.com++C语言的魅力

编程语言C++read.share.zasw1688.com++C语言的魅力

编程语言C++y7ds.com++C语言的魅力

编程语言C++www.y7ds.com++C语言的魅力

编程语言C++www.share.y7ds.com++C语言的魅力

编程语言C++m.www.y7ds.com++C语言的魅力

编程语言C++m.share.y7ds.com++C语言的魅力

编程语言C++www.blog.y7ds.com++C语言的魅力

编程语言C++read.share.y7ds.com++C语言的魅力

编程语言C++xuel5.comC语言的魅力

编程语言C++www.xuel5.com++C语言的魅力

编程语言C++www.share.xuel5.com++C语言的魅力

编程语言C++m.www.xuel5.com++C语言的魅力

编程语言C++m.share.xuel5.com++C语言的魅力

编程语言C++www.blog.xuel5.com++C语言的魅力

编程语言C++read.share.xuel5.com++C语言的魅力

编程语言C++mdgykj.com++C语言的魅力

编程语言C++www.mdgykj.com++C语言的魅力

编程语言C++www.share.mdgykj.com++C语言的魅力

编程语言C++m.www.mdgykj.com++C语言的魅力

编程语言C++m.share.mdgykj.com++C语言的魅力

编程语言C++www.blog.mdgykj.com++C语言的魅力

编程语言C++read.share.mdgykj.com++C语言的魅力

编程语言C++xqfwb.com++C语言的魅力

编程语言C++www.xqfwb.com++C语言的魅力

编程语言C++www.share.xqfwb.com++C语言的魅力

编程语言C++m.www.xqfwb.com++C语言的魅力

编程语言C++m.share.xqfwb.com++C语言的魅力

编程语言C++www.blog.xqfwb.com++C语言的魅力

编程语言C++read.share.xqfwb.com++C语言的魅力

相关推荐
yaoxin5211233 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
凡人叶枫4 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp4 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的4 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉4 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉5 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
凡人叶枫5 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员5 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言
code bean5 小时前
【LangChain】检索器完全指南:从向量检索到生产级 RAG 架构
java·开发语言·微服务
LabVIEW开发6 小时前
LabVIEW + MATLAB 混合编程:爆炸场测试数据精准采集方案
开发语言·matlab·labview