【发布时间】:2014-10-05 14:58:09
【问题描述】:
1) 作用域解析运算符在以下情况下有什么用,当我们也可以内联定义它时?
class Box
{
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
double getVolume(void);// Returns box volume
};
double Box::getVolume(void)
{
return length * breadth * height;
}
2)
此外,double Box::getVolume(void) 行的语义令人困惑。为什么不能:double getVolume(void)::Box。这背后有什么历史吗?
【问题讨论】:
-
这段代码没有任何意义。
-
简短而快速的回答。将函数体放在源文件而不是头文件中编译速度更快。
-
double Box::getVolume(void)与运算符的所有其他用法一致。范围是Box,范围内的东西是getVolume。想“Box包含getVolume”就像想“getVolume属于Box”一样容易,所以我看不出一个比另一个更令人困惑。当然,Box在您的示例范围内甚至没有getVolume函数。 -
如您所见,无法编译的示例代码不会在此处引起积极响应。
-
专业提示:制作函数
double getVolume() const