逛B站看到这么一个问题,java里面的static修饰的方法的重载和重写。虽然是学c++,但是脑海中是有答案的。不过仔细想想,只是知道,并不能鞭辟入里地说明缘由。只能写代码验证加深一下印象。顺便再记一下子类调用父类构造函数和析构函数的顺序。
class A
{
public:
A()
{
cout << "我是A";
}
static void aa()
{
cout << "A0";
}
~A()
{
cout << "A析构";
}
};
class B :public A
{
public:
B()
{
cout << "我是B";
}
static void aa()
{
cout << "B0";
}
~B()
{
cout << "B析构";
}
};
int main()
{
std::cout << "Hello World!\n";
B *ss = new B;
ss->aa();
delete ss;
}
不出所料,编译器是没办法设置static修饰的函数为虚函数的,故不能重写。想起来static的特性一言蔽之可以说是隐藏,恍然大悟,还是需要勤加练习。