有如下类定义: class Base{ int m; int n; public: Base(int m1, int n1): n(n1),m(m1){} };

admin2019-06-07  17

问题 有如下类定义:
     class Base{
         int m;
         int n;
     public:
         Base(int m1, int n1): n(n1),m(m1){}
     };
     class Derived: public Base{
         int q;
     public:
         Derived(int m1, int n1, int q1): q(q1),Base(m1,n1){};
     };
在创建一个 Derived 对象时,数据成员 m、n 和 q 被初始化的顺序是

选项 A、m、n、q
B、n、m、q
C、q、m、n
D、q、n、m

答案A

解析 构造函数初始化列表为类的成员提供初始值,它并不指定初始化的执行次序,成员初始化根据成员在类定义中的声明次序执行;派生类构造函数初始化列表首先初始化基类,然后根据声明次序初始化派生类的成员,所以Derived对象在创建时,首先初始化Base对象,然后初始化自己成员q,在初始化Base时,成员初始化次序为m、n;综上所述,结果为m、n、q;答案为A。
转载请注明原文地址:https://kaotiyun.com/show/oh8p777K
0

最新回复(0)