1.、为什么构造函数不能声明为虚函数?
解析:因为虚函数采用的是虚调用的方法,虚调用是指允许在只知道部分信息的情况下
的工作机制,特别允许我们调用一个只知道接口而不知道其对象的准确类型的函数。
但是如果我们要调用构造函数创建对象时,必须要知道对象的准确类型,
因此构造函数不能为虚函数。
2.C++中哪些函数不能被声明为虚函数?
解析:普通函数(非成员函数),构造函数,内联成员函数、静态成员函数、友元函数。
(1)虚函数用于基类和派生类,普通函数所以不能
(2)构造函数不能是因为虚函数采用的是虚调用的方法,
(3)内联成员函数的实质是在调用的地方直接将代码扩展开
(4)继承时,静态成员函数不能被继承的,它只属于一个类,因为也不存在动态联编
(5)友元函数不是类的成员函数,因此也不能被继承
3.类的静态成员和非静态成员有何区别?
答:类的静态成员每个类只有一个,静态成员为所有类的实例对象共享,静态成员有静态成员变量和静态成员函数,静态成员变量使用前必须初始化,静态成员变量可以被静态成员函数和非静态成员函数访问,而静态成员函数只能访问静态成员变量,因为静态成员函数属于类,其没有this指针。非静态成员每个对象都有一个。
网友评论