如何在C++中的头文件外定义赋值运算符?

php*_*ini 5 c++ variable-assignment

我有一个头文件,其中包含一个带赋值运算符的类.现在我想在我的.cpp文件中定义我的函数.

我的头文件包含:Car &operator=(const Car &other); 现在在我的cpp文件中我想做的事情如下:Car::Car &operator=(const Car &other) { }

不幸的是,这似乎不是正确的语法.那么当我将函数声明和函数定义分开时,如何定义赋值运算符?

Mik*_*our 9

你快到了; 您需要限定函数名称以指示它是成员:

Car &Car::operator=(const Car &other) { }
     ^^^^^
Run Code Online (Sandbox Code Playgroud)

  • @phpheini:是的,通常返回对象的引用(即“return *this;”),以支持赋值链(“car1 = car2 = car3;”)。如果你愿意的话,你可以直接返回“void”,但这可能会让一些人感到惊讶。有些人会以不同的方式分隔它(“Car& Car::...”),以使其更清楚地表明它是类型规范的一部分。 (2认同)