【发布时间】:2012-10-28 21:26:29
【问题描述】:
我正在测试课程并制作了这个课程
class Point
{
private:
int x,y;
public:
void setit(int new_x,int new_y);
void set_x(int new_x);
void set_y(int new_y);
int get_x();
int get_y();
};
现在我继续为所有公共函数编写函数定义,但是,
在我写void set(int new_x,int new_y); 的时候,有些事情让我很困惑
函数定义
void Point::setit(int new_x, int new_y){
Point::set_x(new_x);
Point::set_y(new_y);
}
void Point::setit(int new_x, int new_y){
set_x(new_x);
set_y(new_y);
}
我注意到前面两个函数定义的效果完全一样。
我认为没有 :: 运算符它不会工作,因为它会搜索类之外的函数,因为我不再表示它们在 Point 类中
谁能解释一下为什么它们都有相同的效果??
谢谢。
【问题讨论】:
-
你能解释一下为什么你认为他们的行为会有所不同吗?
-
@Johnsyweb 我认为没有 :: 运算符它不会工作,因为它会在类外搜索这些函数,因为我不再表示它们在 Point 类中
-
简答:类成员函数定义的主体是类的范围的一部分。
-
基本上它不会在类外搜索这个函数,因为(用leman的话来说)类内的函数是“最接近的”。