【发布时间】:2020-11-03 08:48:54
【问题描述】:
我正在学习 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?
【问题讨论】:
-
构造函数不返回临时对象。它用于初始化对象的状态。在
var obj = var()中,var()使用默认构造函数构造一个对象。该对象不是由构造函数返回。 -
创建对象不是构造函数的责任,只是初始化它。简而言之,构造函数总是在已经创建的对象上被调用。
-
你不能显式调用构造函数——它们没有名字也不能被引用。只是对象创建语法看起来和构造函数原型语法一模一样。
标签: c++ oop constructor