Ste*_*ers 2 c++ constructor arguments class
我正在创建一个用于ax和y笛卡尔坐标系的pair1类.x和y是双打.我需要有3个构造函数.
pair1::pair1(double)并且pair1::pair1(double)不能超载.我的课:
class pair1
{
private:
double x;
double y;
public:
pair1(){ x = 0.0, y = 0.0; }
pair1( double a ){ x = a; y =0.0; }
pair1(double b){ x = 0.0; y = b; }
};
Run Code Online (Sandbox Code Playgroud)
1)没有参数,默认x和y为零.
这很简单
2)一个争论分配x和默认y为零.
3)一个arugeument默认x为零并指定y.
那是个问题.你怎么知道,当你只有一个参数时,两者中哪一个被称为?这就是你得到编译错误的原因.
相反 - 使用默认构造函数(没有参数的构造函数),完整构造函数(两者都有),如果需要,SetX()和SetY()分别设置X和Y,并通过函数名称进行区分.
class pair1
{
private:
double x;
double y;
public:
pair1( double a=0.0, double b=0.0 ){ x = a; y =b; };
// default value 0.0 allows to only
// set x, and leave y to be the default,
// or leave them both default.
void SetX(double a) { x=a;};
void SetY(double b) { y=b;};
};
Run Code Online (Sandbox Code Playgroud)