// 类 class A { private: const int a; // 常对象成员,只能在初始化列表赋值 public: // 构造函数 A() { }; A(int x) : a(x) { }; // 初始化列表 // const可用于对重载函数的区分 int getValue(); // 普通成员函数 int getValue() const; // 常成员函数,不得修改类中的任何数据成员...
在C++11 中,派生类能够重用其直接基类定义的构造函数。class Derived : Base { public: using Base::Base; /* ... */ };如上using 声明,对于基类的每个构造函数,编译器都生成一个与之对应(形参列表完全相同)的派生类构造函数。生成如下类型构造函数:...
[解析] 在C++的继承中,基类的构造函数和析构函数不能被继承。所以选项A是正确的。 派生类中包含了基类中的成员,它是对基类定义的扩充和延续,是对基类定义的进一步具体化,也可以说派生类是基类的组合。所以选项B是正确的。 派生类继承了基类的全部数据成员和除了构造函数、析构函数之外的全部函数成员。 所以选项C...
在C++11 中,派生类能够重用其直接基类定义的构造函数。class Derived : Base { public: using Base::Base; /* ... */ };如上using 声明,对于基类的每个构造函数,编译器都生成一个与之对应(形参列表完全相同)的派生类构造函数。生成如下类型构造函数:...
派生类的对象对它的基类成员中( )是可以访问的。 A. 公有继承的公有成员 B. 公有继承的私有成员 C. 公有继承的保护成员 D. 私有继承的公有成员
使用// 类 class A { private: const int a; // 常对象成员,只能在初始化列表赋值 public: // 构造函数 A{ }; A(int x) : a(x) { }; // 初始化列表 // const可用于对重载函数的区分 int getValue; // 普通成员函数 int getValue const; // 常成员函数,不得修改类中的任何数据成员的值 ...
30Base *ptr =newDerived();31ptr->who();3233//因为Base有虚析构函数(virtual ~Base() {}),所以 delete 时,会先调用派生类(Derived)析构函数,再调用基类(Base)析构函数,防止内存泄漏。34deleteptr;35ptr =nullptr;3637system("pause");38return0;39}...
// 类 class A { private: const int a; // 常对象成员,只能在初始化列表赋值 public: // 构造函数 A() : a(0) { }; A(int x) : a(x) { }; // 初始化列表 // const可用于对重载函数的区分 int getValue(); // 普通成员函数 ...
正确答案:D解析:基类与派生类的关系如下: ①基类是对派生类的抽象,派生类是对基类的具体化。基类抽取了它的派生类的公共特征,而派生类通过增加信息将抽象的基类变为某种有用的类型,派生类是基类定义的延续。 ②派生类是基类的组合。 ③公有派生类的对象可以作为基类的对象处理。 由此可知选项A、B和C都是正确的...
正确答案:D解析:基类与派生类的关系如下:①基类是对派生类的抽象,派生类是对基类的具体化。基类抽取了它的派生类的公共特征,而派生类通过增加信息将抽象的基类变为某种有用的类型,派生类是基类定义的延续。②派生类是基类的组合。③公有派生类的对象可以作为基类的对象处理。由此可知选项A、B和C都是正确的。而在...