/===============分界线===================/
为什么没调用 myDate 类的 复制构造函数 ??
在C++中,复制构造函数通常会在以下几种情况下被调用:
operator=
进行赋值操作时,虽然这实际上调用的是赋值操作符,但复制构造函数可能在某些情况下(如临时对象的赋值)间接相关。然而,在你提供的代码示例中(尽管代码本身没有直接展示,但根据问题描述和截图中的上下文),没有调用myDate
类的复制构造函数的原因可能是:
myDate
类支持移动构造函数(move constructor),并且在某个操作中(如函数返回、按值传递参数等)临时对象被用于初始化或赋值给另一个对象,编译器可能会选择调用移动构造函数而不是复制构造函数,因为移动操作通常更高效(不涉及资源的复制,而是资源的转移)。myDate d2(d1);
)而不是复制初始化(如myDate d2 = d1;
),虽然两者在大多数情况下效果相同,但在某些编译器和设置下,直接初始化可能避免调用复制构造函数(尽管这通常与RVO相关)。为了确切地知道为什么没有调用复制构造函数,你需要检查myDate
类的定义(特别是移动构造函数和赋值操作符的定义),以及查看相关的函数调用和对象初始化的上下文。此外,确保你的编译器设置没有禁用复制构造函数或启用了特定的优化选项。
2 回答1.7k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
2 回答2.8k 阅读
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答927 阅读
1 回答1.1k 阅读