学习C++并看到如下所示的课程:
class CRectangle {
int x, y;
public:
void set_values (int,int);
int area () {return (x*y);}
};
void CRectangle::set_values (int a, int b) {
x = a;
y = b;
}
Run Code Online (Sandbox Code Playgroud)
我知道Java中的Java和方法(函数)是在类中编写的.该类看起来像Java接口.我知道我可以写这样的类:
class CRectangle {
int x, y;
public:
void set_values (int a, int b) {
x = a;
y = b;
};
int area () {return (x*y);}
};
Run Code Online (Sandbox Code Playgroud)
但是有差异还是标准?
有区别.当您在类定义中编写函数的定义时(情况2),则认为该函数已被声明inline
.这是标准的C++.
用法,是在类定义中,在头文件(.h)中声明成员函数(Java方法),并在C++文件(.cpp,.cc或.C,...)中定义这些成员函数.减少编译时间,当您更改函数体时,只需编译C++文件,而如果更改头文件中的某些内容,则将编译包含此标题的所有C++文件.
如果只在类定义中定义原型(属于头文件)并在cpp文件中实现方法,那就更清晰了.
当你有非常小的类时,在类定义中做所有事情可能听起来更容易,因为一切都在同一个地方,但是一旦你的类增长,任何使用它的开发人员会讨厌你,因为他会在方法原型之间使用你的代码看看找出的东西(不是每个人都使用IDE来显示所有可用的方法!).
但是,有一个例外:模板类方法需要在头文件中实现,因为它们需要针对模板的每个特化进行编译.