c++ - 复制构造函数或赋值运算符或两者,这里调用哪个?

标签 c++

<分区>

考虑以下语句:-

Class A a = b;//Where is b is existing object of class A.

A 类同时重载了复制构造函数和赋值运算符(已实现)。那么在这种情况下,上面的语句、复制构造函数或赋值运算符或两者都会被调用?

最佳答案

这被称为 Copy initialization

复制初始化定义为:

T t2 = t1;

取决于 t1类型可能有两种情况:

If t1 is NOT of the type T:

  • 它尝试转换 t1 输入 T通过使用隐式转换序列和
  • 然后将创建的对象复制到t2通过调用复制构造函数。

If t1 is of the type T:

  • 复制t1进入t2通过调用复制构造函数。

请注意,通过 copy elision 复制构造函数调用可能被省略


这里不涉及赋值。仅当您将已构造的对象分配给另一个对象时才会发生分配。您的代码语句在一条语句中涉及构造和赋值,因此本身没有赋值。

关于c++ - 复制构造函数或赋值运算符或两者,这里调用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493471/

相关文章:

c++ - MySQL 结果集包含 1 行,但调用 getstring 导致访问冲突

C++ 将格式化字符串转换为流

c# - 将 C++ 枚举导入 C#

c++ - 减慢线程的最佳方法?使用 Sleep() 可以吗?

c++ - 在 Windows 内核驱动程序中与用户空间共享来自内核空间的超过 "4Go - PAGE_SIZE"的缓冲区

c++ - Indy10 TCP 服务器卡住

c++ - Cppreference 的复杂性?

c++ - 如何使用 -fPIC 重新编译

c++ - 是否可以在 C++ 中开发静态 for 循环?

c++ - gdb,连接到使用 gdbserver 启动的正在运行的进程