查看下面两段代码
(1) class classA {...}; class classB { public: classB(classA a) {mA = a;} private: classA mA; }; (2) class classA {...}; class classB { public: classB(classA a): mA(a) {} private: classA mA; };
而在代码段2中,构造函数classB(classA a): mA(a) {}使用了成员初始化列表的方式直接将参数a的值传递给成员变量mA进行初始化。这种方式只涉及一次构造函数调用,并且直接将参数值传递给成员变量,避免了不必要的赋值操作,因此在效率上更高。
需要注意的是,对于简单的类类型(如整数、指针等),这两种方式的效率差异可能并不明显。但对于复杂的类类型,尤其是带有昂贵的构造函数或大量成员变量的类,使用成员初始化列表可以显著提高构造函数的效率。
至于结果,这两种调用方法在功能上是等效的,都能够成功地将参数a的值传递给成员变量mA。所以D选项是不正确的。
综上所述,答案是B:通常情况下,第二种方法(代码段2)的效率更高。