gpt4 book ai didi

c++ - 为什么在没有返回类型的情况下显式调用构造函数时会返回一个临时对象?

转载 作者:行者123 更新时间:2023-12-03 07:12:00 25 4
gpt4 key购买 nike

我正在C++中学习OOP,并且知道我们可以显式调用构造函数,如下所示:

var obj = var(); // Assume var is a class and obj is an instance of an object of the class var.
据我所知, var()构造函数实例化一个临时对象,对其进行初始化,然后将其发送,以便对象 obj 复制其内容。
现在我有两个疑问:
  • 这种理解是否正确(即它是否按照我认为的方式发生)?
  • 另外,我还知道构造函数不会实例化对象,但是会初始化对象。如果这是真的,那么为什么在上述代码的RHS上会形成一个对象?如果RHS上未形成任何对象,则其内容将被复制到对象 obj
  • 最佳答案

    用于创建对象的语法类似于调用函数的语法,但是它们是不同的。您不能调用构造函数。
    在C++ 17中,甚至没有两个对象。临时值var()实现为obj

    关于c++ - 为什么在没有返回类型的情况下显式调用构造函数时会返回一个临时对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64659464/

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