1.首先对于静态成员函数不做讨论,众所周知是属于类的
2.所有的成员函数在类编译时就创建好了,故它们是存在对象空间之外的地方。故创建对象时只是创建属于这个对象的成员变量而没有成员函数。如果成员函数的参数没用到成员变量的话,不管此成员函数是不是static的,都能正常工作。
3.非静态成员函数是属于对象的。
4.如下图代码所示,会执行printA(),但是不会执行printB(),因为是在构造函数中进行虚表的创建和虚表指针的初始化。故这里没有执行构造函数自然找不到虚函数指针指向的位置。
class D
{
public:
D() { std::cout << "构造函数完成" << std::endl; }
void printA()
{
std::cout << "printA" << a << std::endl;
}
virtual void printB()
{
std::cout << "printB" << std::endl;
}
};
int main()
{
D* d = NULL;
d->printA();
d->printB();
}