首页 > 试题广场 >

C++中的拷贝构造函数在下面哪些情况下会被调用()

[不定项选择题]
C++中的拷贝构造函数在下面哪些情况下会被调用()
  • 对象创建的时候
  • 使用一个类的对象去初始化该类的一个新对象
  • 被调用函数的形参是类的对象
  • 当函数的返回值是类的对象时,函数执行完成返回调用者
bcd
发表于 2020-08-23 14:49:17 回复(1)
<p>d是错的,当有RVO的时候,不一定</p>
发表于 2021-07-16 08:56:04 回复(0)

B. 使用一个类的对象去初始化该类的一个新对象,例如

cppCopy Code
MyClass obj1; MyClass obj2(obj1); // 调用拷贝构造函数

C. 被调用函数的形参是类的对象,且参数传递方式是按值传递,例如

cppCopy Code
void func(MyClass obj); int main() { MyClass obj; func(obj); // 调用拷贝构造函数 return 0; }

D. 当函数的返回值是类的对象时,函数执行完成返回调用者,例如

cppCopy Code
MyClass func() { MyClass obj; return obj; // 调用拷贝构造函数 }
发表于 2023-10-30 15:04:50 回复(0)
创建对象的时候是调用默认构造函数或者重载的构造函数,根据创建对象时给的参数来选择
发表于 2022-10-06 15:34:01 回复(0)
纠结是可能会还是肯定会,D选项如果该类有移动拷贝构造函数,返回的又是局部对象变量,就不会调用拷贝构造的……吧?
发表于 2023-09-23 14:25:42 回复(0)
A描述有点歧义,难道T A; T B(A);就不算对象创建了吗,应该把A选项改为“总是在对象创建的时候”
发表于 2022-08-25 10:57:30 回复(0)
对象创建的时候 做题的时候想拷贝构造不就是构造对象时用的么,怎么对象创建时候不对?创建!=赋值?
发表于 2022-01-13 19:23:17 回复(1)
注意读题是能使用拷贝构造函数的
发表于 2022-01-10 18:45:55 回复(0)
有了B选项,就不能再选A了
发表于 2020-08-22 02:53:19 回复(0)