编译器会在空类声明中添加什么?

发布于 2024-08-29 10:17:41 字数 219 浏览 3 评论 0原文

假设,我写

class A { };

编译器应该提供(在需要时)

  1. 构造函数
  2. 析构函数
  3. 复制构造函数
  4. = 运算符

这是编译器提供的全部吗?这份名单是否有任何补充或删除?

Suppose, I write

class A { };

The compiler should provide (as and when needed)

  1. a constructor
  2. a destructor
  3. a copy constructor
  4. = operator

Is this all the compiler provides? Are there any additions or deletions to this list?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

寂寞陪衬 2024-09-05 10:17:41

完成了。但有两点需要注意:

  1. copy = 运算符。就像有一个复制构造函数一样,也有一个复制赋值运算符。
  2. 仅在实际使用时才提供它们。

对2的一些解释:

struct A { private: A(); };
struct B : A { };

没关系!对于“B”来说,提供默认构造函数是不正确的,因为它无法调用基类的构造函数。但默认构造函数(以及其他特殊函数)仅在实际需要时才提供(我们说它是隐式定义)。

It's complete. But there are two points you should note:

  1. It's the copy =operator. Just like there is a copy constructor, there is a copy assignment operator.
  2. They are only provided if actually used.

Some explanation for 2:

struct A { private: A(); };
struct B : A { };

That's fine! Providing a default constructor would be ill-formed for "B", because it would not be able to call the base-class' constructor. But the default constructor (and the other special functions) is only provided (we say it's implicitly defined) if it's actually needed.

小姐丶请自重 2024-09-05 10:17:41

从 C++11 开始,除了您列出的之外,还包括

  • Move ctor
  • Move 赋值运算符

From C++11 onwards, in addition to what you have listed

  • Move ctor
  • Move assignment operator
萌化 2024-09-05 10:17:41

您的清单已完成。这就是它所添加的全部内容。

Your list is complete. This is all it is adding.

最美的太阳 2024-09-05 10:17:41

名单尚未完成…………
除了上面提到的四个属性之外,还有一个地址运算符(&)重载方法,它返回调用对象的地址,也是由编译器自动提供的。

The list is not completed............
In addition with the above mention FOUR properties , there is an address operator ( & ) overloaded method , that return the address of the invoking object , is also provided automatically by the compiler.

柳若烟 2024-09-05 10:17:41

有五个属性:

构造

函数 复制构造

函数 析构

函数

赋值运算符 引用运算符(&) - 地址

There are five properties:

constructor

copy constructor

destructor

assignment operator

the reference operator(&) - the address

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文