问题 单项选择题

有以下程序
#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次。

单项选择题
解答题