以下哪项描述是正确的
class Base { public: Base() { cout << "Base\n"; } ~Base() { cout << "~Base\n"; } static void printBase() { cout << "print Base\n"; } }; class Derived : public Base { public: Derived() { cout << "Derived\n"; } ~Derived() { cout << "~Derived\n"; } void printDerived() { // 调用父类的静态成员 Base::printBase(); cout << "print Derived\n"; } }; int main(int argc, char const* argv[]) { Derived d; d.printDerived(); return 0; } /* 输出: Base Derived print Base print Derived ~Derived ~Base */
A:父类的构造函数和析构函数是会被自动调用的
B:这个选项在百度搜了一下,似乎是php的题目,如果不使用public、private、protected等关键字修饰方法或属性,那么可以使用var关键字,它的功能等同于public,可以在类内或类外被调用,也可以被继承使用。var就是public的别名,是用在类中定义公有属性的(来源于网络)
C:父类中定义的静态成员在子类中可以使用父类名直接调用父类名::成员名;
D:只要类中包含抽象方法,这个类就是抽象类,抽象类是不能被实例化的
class A { public: virtual void f()=0; }; //声明一个抽象类 class B: public A { public: void f(){cout<<"B"<<endl;}; } void main() { A test; //错误不能这么写,因为类A是抽象类,含有未实现的函数f()。因此不能创建对象 B test; //子类可以被创建对象,因为有实现虚函数f A *p=&test; //可以创建抽象类的指针指向派生类对象。 }