类构造函数参数C++

Ste*_*ers 2 c++ constructor arguments class

我正在创建一个用于ax和y笛卡尔坐标系的pair1类.x和y是双打.我需要有3个构造函数.

  1. 没有参数,默认x和y为零.
  2. 一个争论将x和默认y分配给零.
  3. 一个arugeument默认x为零并指定y.我不确定我是否正确设置了这门课程.我得到了以下错误: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)

lit*_*adv 5

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)