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
}
两者都可以成功编译,但有什么区别?
答案 0 :(得分:5)
在这种情况下,是的,它们是相同的,但情况并非总是如此。它们可以是同一类的不同构造函数。在下面的示例中,类的行为取决于它的构造方式:
#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;
}