class base
{
int a, b;
public:
base(int a, int b);
{
a = a;
b = b;
}
}
istream& operator>>(istream& is, base& no)
{
int area, local;
cout << "Area Code : ";
is >> area;
cout << "Local number : ";
is >> local;
// call two argument constructor;
return is;
}
我已经尝试了base(area,local);
但是在执行之后,值会变回0
我也试过no(area,local);
这也行不通......
答案 0 :(得分:1)
您所描述的不是构造函数;它是一个插入运算符(operator>>
)。
对于您的班级base
,您可以这样称呼它:
base b;
std::cin >> b;
您的运营商将实施为
istream& operator>>(istream& is, base& no)
{
cout << "Area Code : ";
is >> no.area;
cout << "Local number : ";
is >> no.local;
// call two argument constructor;
return is;
}
答案 1 :(得分:1)
你可以把它写成
no = base(area, local);
或者,如果您让operator>>
成为base
课程的朋友,那么您可以将单个读取修改为
is >> no.area;
is >> no.local;
答案 2 :(得分:0)
在构造函数中,您可以:
base(int a, int b);
{
a = a;
b = b;
}
只将参数分配给自己,而不是参数的成员变量。要更改成员变量,您必须执行以下操作:
base(int a, int b)
{
this->a = a;
this->b = b;
}
调用它的语法是no = base(area, local);
。如果您的IDE无法为您生成,可以还需要一个分配运算符。它可能足够聪明,但只是给你一个抬头。