有以下程序 #include<iostream> using namespace std; class MyClass { public: MyClass(int n){number =n; } //拷贝构

admin2010-06-06  17

问题 有以下程序    #include<iostream>    using namespace std;    class MyClass    {    public:      MyClass(int n){number =n; }      //拷贝构造函数      MyClass(MyClass& other)  {number=other.number;}      ~MyClass()  {}    private:      int number;    };    MyClass fun(MyClass p)    {       MyClass temp(p);       return temp;    }    int main()    {       MyClass Obj1(10),obj2(0);       MyClass obj3(obj1);       obj2=fun(obj3);       return 0;    }    程序执行时,MyClass类的拷贝构造函数被调用的次数是

选项 A、5
B、4
C、3
D、2

答案B

解析 本题考核C++的拷贝构造函数。调用拷贝构造函数的情况为:一个新对象被另一个已存在的同类型对象初始化;当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数。在函数值返回时形参的生命期结束时它的析构函数被调用;在函数返回一个对象时调用拷贝构造函数。符合以上条件的有:用对象obj1来初始化obj3;obj3作为实参被传入;函数fun返回一个对象时;系统用返回值初始化一个匿名对象时调用了拷贝构造函数。总共调用4次。
转载请注明原文地址:https://kaotiyun.com/show/myjp777K
0

最新回复(0)