具有相同名称但签名不同的多个构造函数定义(C ++)

时间:2010-03-08 00:45:40

标签: c++ constructor

使用以下代码,我在编译时不断收到错误C2535。它抱怨已经定义或声明了一个成员函数。

Rationnel.h

...
class Rationnel
{   
public:
Rationnel(int); //Constructor
Rationnel(int,int); //Constructor
void add(const Rationnel);
...

Rationnel.cpp

...
//Constructor
Rationnel::Rationnel(int n = 1)
{
    numerateur = n;
    denominateur = 1;
}

//Constructor
Rationnel::Rationnel(int n = 1, int d = 1)
{
    numerateur = n;
    denominateur = d;
}
...

知道可能导致错误的原因是什么?

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

如果你写Rationnel(5),你怎么知道会调用以下哪一个?两者都可以使用,因此会发生错误。

Rationnel::Rationnel(int n = 1)
Rationnel::Rationnel(int n = 1, int d = 1)