gpt4 book ai didi

c++ - 两种使用默认构造函数的区别

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:59 25 4
gpt4 key购买 nike

按照两种不同的方式使用其默认构造函数定义类“Person”的对象有什么区别:

方法一:

Person person = Person();

方法二:

Person person();

当我在默认构造函数中初始化一些变量并尝试访问这些变量或通过主例程中的 get/set 方法设置这些变量时,我在方法 2 中遇到编译错误,但方法 1 有效。

谢谢。

最佳答案

Person person = Person();

这声明了一个名为 personPerson 对象。它使用 Person() 创建的临时对象初始化此对象。这意味着它将调用 Person 的复制/移动构造函数(可能会被省略)。

Person person();

这声明了一个名为 person函数,它返回一个 Person 对象。这不是对象的声明。

你很可能想要这个:

Person person;

这声明了一个名为 personPerson 对象,它是默认构造的。

您可能想要使用 C++11 中引入的新的“统一”初始化语法,它避免了变量和函数声明之间的歧义:

Person person{};

最后,如果您是 AAA -minded,你可能想使用 Herb Sutter 提出的风格:

auto person = Person{};

关于c++ - 两种使用默认构造函数的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24983190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com