1.C++临时变量
在工程中为了调用类的成员函数,直接调用构造函数之后再紧接着调用其成员函数,会产生临时变量,临时变量的生命周期只有一行语句
例如:test().fun1();
2.单个对象在构造时,先调用父类的构造函数,然后再调用成员变量的构造函数,最后调用自身的构造函数。
析构函数与对应构造函数的调用顺序相反
3.const关键字能否修饰类的对象?如果可以,有什么特性
const关键字能够修饰对象,const修饰的对象为只读变量
4.什么是只读变量,可以被修改吗?
只读变量是变异阶段的概念,运行时无效
5. string s = "123";
const char* p = s.c_str();
cout << p << endl;
s.append("abd");
cout << p << endl;
结果:
123
123
原因:string内部维护的字符指针指向的内存空间随程序运行改变,指向的内存发生了变化,所以调用append函数之后,p指针成为了野指针
6.new/delete 和 malloc/free
必须成对出现,如果new申请的空间,使用free释放,最终不会调用析构函数;而malloc申请的空间,使用delete释放,会调用一次析构函数
Test *pn = new test();
Test *pm = (Test*)malloc(sizeof(Test));
7.构造函数是否可以成为虚函数?析构函数?
构造函数不可能成为虚函数,在构造函数执行之后,需函数表指针才会被正确的初始化
析构函数定义为虚函数,在工程中被常用
在构造函数和析构函数中不会产生多态行为