只是一个简单的问题。
我编写了一些返回自定义类Command的代码,我写的代码似乎运行正常。我想知道是否有任何理由我不应该这样做。它是这样的:
Command Behavior::getCommand ()
{
char input = 'x';
return Command (input, -1, -1);
}
无论如何,我读到构造函数不具有返回值,但这在g ++中有效。
感谢您的任何建议,
里斯
答案 0 :(得分:7)
构造函数本身没有返回值。这样做是构造一个临时的Command
对象并将构造的objet返回给调用者。它实际上就像你说的那样:
Command temp(input, -1, -1);
return temp;
它适用于任何C ++编译器。
答案 1 :(得分:2)
getCommand
不是构造函数。以上是完全有效的,并且通常也是高效的,因为返回值优化(RVO),如果你实例化一个局部变量并返回它,那么(我认为)不适用。
答案 2 :(得分:1)
构造函数没有返回值;你是显式构造一个类的临时实例,并返回它。这没有什么不妥,除了它会复制。
如果你想避免复制,你有几个选项,其中一个选项是Command*
的out参数,并使用new和delete。
答案 3 :(得分:0)
您没有具有返回值的构造函数。
Command::Command(char, int, int)
是你的构造函数。
你有一个返回一个对象的方法,这是完全正常的。