分类: C/C++
2009-10-15 14:22:38
1:static成员变量必须初始化!
2:什么时候析构函数应该声明为虚函数?
当要实现多态时,析构函数应该声明为虚函数;如果不声明为虚函数,则会发生内存泄露!
(1)构造子类对象时
先调用父类构造函数,再调用子类构造函数。
(2)析构子类对象时
如果析构函数不为虚函数,则只调用父类析构函数;
如果析构函数为虚函数,则先调用子类析构函数,再调用父类析构函数。
3:构造函数为什么不能是虚函数?
观点一:没有必要
从一个类派生子类,子类的类名肯定和父类的不同,所以根本谈不上什么覆盖,那还虚它干嘛!
观点二:不能为虚--虚函数特点
(1)“虚”也好,不“虚”也好,这些概念都必须等有了对象才有实际意义,连对象还没创建好,谈虚函数没有任何意义的!
(2)“虚”的含义之一就是“到运行时才知道调用谁”,假如说连构造都可以是虚的,那么new A();就意味着:到运行时才知道要创建什么!
观点三:不能为虚--构造函数特点
(1)构造函数在派生类中是不会被重定义的!
(2)构造函数是不允许被显示调用的!
4:内联函数为什么不能是虚函数?
内联函数是在编译前绑定的,而虚函数是在编译后动态绑定的!
5:什么虚指针?
答:虚指针或虚函数指针是虚函数的实现细节。带有虚函数的类中的每一个对象都有一个虚指针指向该类的虚函数表