我的问题是构造函数返回什么?这个问题与“构造函数的返回类型是什么?”并没有太大不同。 我曾经在某处读到,构造函数隐式地返回一个完整的对象(即隐式返回类型是类名),但不应明确指定。
struct empty{};
int main(){
empty(); //creates a temporary and implicitly a constructor is called
}
据我理解,隐式返回类型应该是类的名称,即empty
。我的解释是否正确?
我的问题是构造函数返回什么?这个问题与“构造函数的返回类型是什么?”并没有太大不同。 我曾经在某处读到,构造函数隐式地返回一个完整的对象(即隐式返回类型是类名),但不应明确指定。
struct empty{};
int main(){
empty(); //creates a temporary and implicitly a constructor is called
}
据我理解,隐式返回类型应该是类的名称,即empty
。我的解释是否正确?
构造函数不返回任何东西。 构造函数被调用以初始化对象。 构造函数只能用于初始化对象; 实际上无法显式地调用构造函数(首先,构造函数没有名称)。
在您给出的示例中,empty()
不是函数调用表达式,而是值初始化。 它创建了一个类型为empty
的值初始化临时对象。
Terminator Terminator :: Terminator()
而不是void Terminator :: Terminator()
。 - mip构造函数确实返回一些东西。它返回指向this
所指对象的引用。因此,构造函数的隐式返回语句如下:
构造函数确实返回一些东西。它返回指向this
所指对象的引用。因此,构造函数的隐式返回语句如下:
*this;
这是如何使用的?
如果您创建一个带有“通用”成员类型的 something
类模板,则在类 something
的构造函数中显式调用通用类型的默认零参数构造函数(即 generic()
),并通过 something
构造函数的赋值运算符和初始化语句初始化您的通用成员。构造函数必须返回某些内容,否则我刚才写的内容中没有一个会起作用。这在我正在阅读的书籍中有提到。
构造函数不返回任何内容。
在对象创建时,构造函数会隐式调用以初始化正在创建的对象。
MyClass myclass = MyClass();
- hkBattousaiBook *b = new Book();
new
关键字时,编译器会分配所需的内存,然后调用构造函数在分配的内存上创建一个新对象。然后new
返回指向该内存块的指针。构造函数只创建对象,从不返回任何东西。new
分配内存空间,而不是构造函数。 - edA-qa mort-ora-y这个怎么样:
int main() {
const empty &er = empty();
empty *ep = const_cast<empty*>(er); //casting away conentness to make changes in the members
cout<<"\n main ends \n";
//dtor get called here
}
ctor返回一个指向内存位置(*this)的const引用,您可以强制转换掉const并将其用作非const普通对象,例如empty *e = new e;
empty & er = const_cast<empty &>(empty())
。 - mip
new Class();
时,它会返回一个指向该类实例位置的指针。这是你所指的吗? - xxporc++-faq
标签中移除。如果您不同意,请讨论。 - sbi