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

标签 c++ oop constructor

我正在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/

    相关文章:

    c++ - vector 构造函数标识为函数

    当我将 promise 分配给线程时,C++ 获取 "Debug Error R6010 -abort() has been called "

    C++ 将方法和字段带入外部范围,无需显式引用

    javascript - 尝试使用 ajax 将数据发送到 OOP 类

    javascript - JQuery、ajax 和 js OOP

    C++ 模板类 : No instance of constructor matches the argument list

    C++分配和析构函数

    c++ - 函数指针的静态初始化

    c++ - 为接口(interface)实现通用函数

    c# - block 基构造函数到子类