弗拉德给出了理由,这里有一个解决办法,可以避免重复你的神奇数字:
派生类对象可以初始化基类的引用。引用是别名,但这个别名只能包含派生类对象中的由基类继承来的成员。8.1.6 在类中定义对象成员称为复合或嵌套,请对比复合与
规则2派生类的对象可以初始化基类的引用:Xrx=y;规则3派生类对象的地址可以赋给基类类型的指针:X*px=&y;注意:在这两种情况下,通过rx或px仅能访问派生类从基类继承来的成员。若欲访问派生类中新增的成员,则必须对它们进行强制类型转换:(Y*)px->SetY(5);//设SetY()为类Y新增的公有成员函数(Y&)rx....
这段代码定义了派生类的拷贝构造函数, 然后调用了基类的拷贝构造函数(c1被当做基类B的对象来使用)。include <iostream>class Base {public:Base() {std::cout << "Base()" << std::endl;}Base(const Base & other) {std::cout << "Base(const Base &)" << std::endl;}};class Deri...
百度试题 题目派生类对象可以初始化基类对象的引用 A.正确B.错误相关知识点: 试题来源: 解析 A 反馈 收藏
派生类继承了基类的所有成员,派生类对象理所当然可以当做基类对象来用。C++中,一般是将派生类对象传递给基类引用,或者是将派生类的地址传递给基类指针变量,这样才能产生正确的多态行为,并且不会出现截断问题。 你如果直接将派生类对象赋值给基类对象,派生类自身的成员就会被丢弃,只保留基类基类继承来的...
使用base关键字指定自己需要的基类构造器: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace InitialConstruct { class BaseClass { public BaseClass() { Console.WriteLine("[BaseClass.BaseClass] " + "Construct called"); } public BaseClass(int foo) { Co...
选项A正确,公有派生类对象可以用于初始化基类的引用。选项B正确,一个派生类可以由多个基类派生而来,这称为多重继承。选项C不正确,派生类的成员函数中不能直接访问基类的私有成员,只能通过基类的公有或保护成员函数来访问。选项D正确,派生类的成员函数中可以直接访问基类的保护成员。 故本题答案应选择C选项。 本题...
假设基类复制构造函数的原型为Base(const Base &b),通过公有派生出的派生类复制构造函数的原型为Derived(const Derived &d);则Derived类的复制构造函数的执行过程为:Derived(const Derived &d):Base(d)//由于构造函数不能被继承,而且派生类不能直接访问基类的私有成员, 因此需要使用初始化列表来初始...
刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供可以用派生类对象地址来初始化一个指向基类对象的指针。A.正确B.错误的答案解析,刷刷题为用户提供专业的考试题库练习。一分钟将考试题Word文档/Excel文档/PDF文档转化为在线题库,制作自己的电子