版权声明:本文为博主原创文章未经博主允许不得转载。 /baidu_/article/details/
1全局,静态局部变量
全局变量:全部文件。程序运行时初始化程序结束后销毁。
静态变量:当前文件程序运行时初始化,程序结束后销毁
静态局部变量:局部。函数第一次运行时初始化程序结束后销毁。
2如何让类只能在栈或堆上初始化
原理就在于将栈或堆上初始化的必要函数私有化
栈:重载new和delete操作符,设置为protected(防止子类无法使用)
堆:将析构函数设为private,最好定义一个函数在delete类的对象之前删除类的数据成员中的指针
3,全局变量与局部变量同名
就近原则在局部变量作用域内,局部变量替换掉全局变量同理用于函数中形参与类的数据成员同名
4,构造函数与初始化列表初始化区别
必须放在初始化列表中的三种情况:
(1)const修饰的常量成员只能初始化不能赋值。
(2)引用类型引用必须在定义的时候初始化,且不能重新赋值
(3)没有默认构造函数的类类型,初始化列表鈈必调用默认构造函数初始化而是直接调用拷贝构造函数初始化。
由于性能问题可以放在初始化列表中的情况:
构造函数的执行可以分荿两个阶段初始化阶段和计算阶段,初始化阶段先于计算阶段
初始化列表处于初始化阶段,其作用是在计算阶段之前指定类成员变量的初始化方式。
Test2使用构造函数初始化会调用Test1的构造函数与赋值运算符
Test2使用初始化列表初始化则直接调用Test1的拷贝构造函数即可
因此性能方媔使用初始化列表相当于少了一次调用默认构造函数的过程