c++ - 类构造函数参数 C++

标签 c++ class constructor arguments

我正在为 x 和 y 笛卡尔坐标系创建一个 pair1 类。 x 和 y 是 double 。我需要 3 个构造函数。

  1. 没有参数,默认 x 和 y 为零。
  2. 一个论点将 x 赋值并将 y 默认为零。
  3. 一个参数将 x 默认为零并分配 y。我不确定我是否正确设置了类(class)。我收到以下错误:pair1::pair1(double)pair1::pair1(double) 无法重载。

我的类(class):

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; }
};

最佳答案

1) no arguments, defaults x and y to zero.

这很简单

2) one arguement assigns x and defaults y to zero.

3) one arugeument defaults x to zero and assigns 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;};
};

关于c++ - 类构造函数参数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528992/

相关文章:

c++ - 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告吗?

c++ - boost::this_thread::disable_interruption 使用困惑

delphi - 类声明之间的差异

c++ - 如何使用构造函数在另一个类中创建对象?

java - 如何在同一类的方法中调用构造函数?

Javascript : class instantiation with json

c++ - C++ inFile.Read中大小后跟多个参数

c++ - 文件处理 C++ :Which is the ideal stream to be used while working with database files?

c++ - 获得自适应迭代器的快速而肮脏的方法是什么?

python - 通过类内的 For 循环使用 linspace 进行迭代