摘要:
友元的概念 友元是c++中的一种关系 友元关系发生在函数与类之间或者类与类之间 友元关系时单项的,不能传递 友元的函数 在类中以friend关键字声明友元 类的友元可以是其它类或者具体函数 友元不是类的一部分 友元不受类中访问级别的限制 友元可以直接访问具体类的所有成员 友元是为了兼顾c语言的高效而 阅读全文
摘要:
构造函数 只提供自动初始化成员变量的机会 不能保证初始化逻辑一定成功 执行return语句后构造函数立即结束 半成品对象的概念 初始化操作不能按照预期完成而得到的对象 半成品对象是合法的c++对象,也是Bug的重要来源 二阶构造示例一 class TwoPhaseCons { private: Tw 阅读全文
摘要:
在c++中可以定义静态成员函数 静态成员函数是类中特殊的成员函数 静态成员函数属于整个类所有 可以通过类名直接访问公有静态成员函数 可以通过对象名访问公有静态成员函数 小结 静态成员函数时类中特殊的成员函数 静态成员函数没有隐藏的this参数 静态成员函数成员函数可以通过类名直接访问 静态成员函数只 阅读全文
摘要:
在c++中可以定义静态成员变量 静态成员变量属于整个类所有 静态成员变量的生命周期不依赖于任何对象 可以通过类名直接访问公有静态成员变量 所有对象共享类的静态成员变量 可以通过对象名访问公有静态成员变量 静态成员变量 静态成员变量的特性 在定义时直接通过static关键字修饰 静态成员变量需要在类外 阅读全文
摘要:
关于析构的疑问 单个对象创建时构造函数的调用顺序 1.调用父类的构造过程 2.调用成员变量的构造函数(调用顺序与声明顺序相同) 3.调用类自身的构造函数 析构函数与对应构造函数的调用顺序相反。 关于析构的答案 对于栈对象和全局对象,类似于入栈与出栈的顺序,最后构造的对象最先析构!! 堆对象的析构发生 阅读全文
摘要:
思考 构造函数是一个特殊的函数 是否可以直接调用? 是否可以在构造函数中调用构造函数? 直接调用构造函数的行为是什么? 答案 直接调用构造函数将产生一个临时对象 临时对象的生命周期只有一条语句的时间 临时对象的作用域只在一条语句中 临时对象是c++中值得警惕的灰色地带 小结 直接调用构造函数将产生一 阅读全文
摘要:
对于局部对象 当程序执行流到达对象的定义语句时进行构造 对于堆对象 当程序执行流到达new语句时创建对象 使用new创建对象将自动触发构造函数的调用 对于全局对象 对象的构造顺序是不确定的 不同的编译器使用不同的规则确定构造顺序 阅读全文
摘要:
类成员的初始化 注意事项 成员的初始化顺序与成员的声明顺序相同 成员的初始化顺序与初始化列表中的位置无关 初始化列表先于构造函数的函数体执行 类中的const成员 类中的const成员会被分配空间的 类中的const成员的本质是只读变量 类中的const成员只能在初始化列表中指定初始值 编译器无法直 阅读全文