了解操作员重载的问题

时间:2019-01-08 12:48:52

标签: c++ operator-overloading

我正在阅读Bjarne Stroustrup的TCPPPL,遇到了以下代码(如下所示)。我有两个问题:

  1. 函数operator +的主体在哪里?我的意思是在类X中只有函数的声明。

  2. 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)
 }

2 个答案:

答案 0 :(得分:1)

  

X(int)行是什么意思?

X(int)是接受单个整数参数的构造函数的声明。缺少定义。

  

函数operator +的主体在哪里

无论您定义了什么。

没有正确的定义,此代码将不起作用。

答案 1 :(得分:1)

  

1)函数operator +的主体在哪里?我的意思是在类X中只有函数的声明。

operator+的定义(正文)可以在任何地方。该代码显然不是一个完整的程序(没有main)。因此,定义可能在显示的代码下面,甚至在另一个编译单元中。

  

2)X(int)行是什么意思?这是将int作为参数的构造函数吗?

这是类X的转换构造函数的声明,该构造函数接受整数作为参数。