我正在阅读Bjarne Stroustrup的TCPPPL,遇到了以下代码(如下所示)。我有两个问题:
函数operator +的主体在哪里?我的意思是在类X中只有函数的声明。
X(int)行是什么意思?这是将int作为参数的构造函数吗?
class X {
public:
void operator+(int);
X(int);
};
void operator+(X,X);
void operator+(X,double);
void f(X a)
{
a+1; // a.operator+(1)
1+a; // ::operator+(X(1),a)
a+1.0; // ::operator+(a,1.0)
}
答案 0 :(得分:1)
X(int)行是什么意思?
X(int)
是接受单个整数参数的构造函数的声明。缺少定义。
函数operator +的主体在哪里
无论您定义了什么。
没有正确的定义,此代码将不起作用。
答案 1 :(得分:1)
1)函数operator +的主体在哪里?我的意思是在类X中只有函数的声明。
operator+
的定义(正文)可以在任何地方。该代码显然不是一个完整的程序(没有main
)。因此,定义可能在显示的代码下面,甚至在另一个编译单元中。
2)X(int)行是什么意思?这是将int作为参数的构造函数吗?
这是类X
的转换构造函数的声明,该构造函数接受整数作为参数。