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