共同背景优先。在 C++ 中,您可以在类主体内部编写方法定义,如以下有效 C++ 风格的
Widget
类所示:
class Widget {
unsigned TheSize;
public:
unsigned getSize() const { return TheSize; }
};
我知道这种时尚也被称为“类内定义”,它是隐式的“inline
”(无需用关键字告诉编译器)。另一方面,您可以将方法写在类之外,显式限定其名称,例如:
class Widget {
unsigned TheSize;
public:
unsigned getSize() const;
};
unsigned Widget::getSize() const {
return TheSize;
}
现在问题来了。我想使用 JetBrains 为 C/C++ 制作的新 IDECLion
,将一些以 in-the-class 方式编写的类转换为 out-of-class 方式。我想知道这个漂亮的 IDE 是否为这种重构提供内置支持。我看不到它有一个名为 Pull Inline Method Out of Class 的重构,尽管它确实有相反的 Inline Method 重构工具。
编辑:我正在使用的 CLion 版本:
CLion 2018.3.1
Build #CL-183.4588.63, built on December 4, 2018
Licensed to CLion Evaluator
Expiration date: January 10, 2019
JRE: 1.8.0_152-release-1343-b16 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 4.15.0-42-generic
New -> C/C++ Source File
(与 .hpp 文件同名,但这不是强制性的),并勾选了
Add to target
。然后我将头文件包含在源文件中。之后,当我将光标放在方法名称上,点击Alt + Enter
,然后选择Split function into declaration and definition
时,它只在头文件中留下声明,并自动将定义移动到源文件中。(哦,这对模板类不起作用。)