很抱歉如果这是重复的问题,但我没有找到对这个问题的讨论。所以,我正在学习C++,我不理解给类对象赋值的以下问题。我有这个T类的实现:
class T
{
int aInt;
double aDouble;
public:
T():aInt(0),aDouble(0.){}
T(int my_aInt, double my_aDouble):aInt(my_aInt), aDouble(my_aDouble){}
T(int my_aInt):aInt(my_aInt), aDouble(0.){}
T(double my_aDouble):aInt(0), aDouble(my_aDouble){}
void set_aInt(int my_aInt){
aInt = my_aInt;
}
void set_aDouble(double my_aDouble){
aDouble = my_aDouble;
}
int get_aInt(){
return aInt;
}
double get_aDouble(){
return aDouble;
}
};
我想创建这个类的对象并将一些值赋给它们。我可以用以下方式完成:
T tt1(-1, 5.), tt2(-1), tt3(5.);
它运作得很好。现在我想更改分配给对象tt1的值。我知道可以像这样做:
tt1.set_aInt(-3); // gives aInt = -3, aDouble = 0
tt1.set_aDouble(6.); // gives aInt = 0, aDouble = 6.
它也可以正常工作。但似乎还有另一种方法来实现:
tt1 = -3; // gives aInt = -3, aDouble = 0
tt1 = 6.; // gives aInt = 0, aDouble = 6.
tt1 = (-3, 6.); // gives aInt = 0, aDouble = 6. - Why?
我的第一个问题是: tt1 = -3;
和 tt1.set_aInt(-3);
是等价的吗?这种做法好吗?第二个问题是:tt1 = (-3, 6.);
有什么问题,为什么将 aInt 的值设置为0而不是-3?