我可以通过返回构造函数直接返回对象吗?
Can I directly return an object by returning constructor?
class time
{
public:
time(int i, int j, int k)
{
hour = i, minute = j, second = k;
}
private:
int hour, minute, second;
}
time return_an_object_1 (void)
{
return time(1, 30, 59); // Using parentheses
}
time return_an_object_2 (void)
{
return time{1, 30, 59}; // Using curly bracket
}
都可以成功编译,但有什么区别呢?
在这种情况下,它们是相同的,但情况并非总是如此。它们可以是同一类的不同构造函数。在下面的例子中,类的行为取决于它的构造方式:
#include <iostream>
#include <initializer_list>
class Foo {
public:
Foo( int a, int b, int c) {
std::cout << "1" << std::endl;
}
Foo( std::initializer_list<int> data) {
std::cout << "2" << std::endl;
}
};
int main() {
Foo f(1, 2, 3);
Foo o{1, 2, 3};
return 0;
}
相关文章:
- 如何返回对象C++的数组
- 如何使用std::min和std::less返回对象
- 如何通过引用返回对象
- 如何安全地从 DLL 调用返回对象
- 如何在不销毁对象的情况下返回对象列表
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 使用返回对象的函数处理错误
- 何时返回指针与返回对象的一般经验法则?
- 如何使用运算符+重载函数正确返回对象?
- C++,class,一个返回对象的函数
- 运算符的返回对象 = C++ 中的重载
- 从队列返回对象的最快方法,但前提是队列有它
- 如何使用条件表达式返回对象指针?
- 使用构造函数从函数返回对象
- 隐式转换函数的返回对象时是否会影响性能?
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 按值和堆栈大小限制返回对象
- 我应该如何从函数返回对象?
- c++:何时传递指针与返回对象
- 返回对象会丢失属性