C++中,在类外和类内定义一个同名变量,这两个变量有什么关系
3个回答
展开全部
作用域不一样,类内的变量会覆盖类外的变量。所以在类内若要访问类外同名变量,必须显式指定其作用域.例如
int x;
class A { int x;
A() { x = 0; ::x = 1; }
}
int x;
class A { int x;
A() { x = 0; ::x = 1; }
}
追问
这里的x=0,这个x还要不要加一个this指针
追答
不需要,因为x在作用域里,而且没有歧义,但是如果这样就需要了:
int x;
class A { int x;
A() { int x;
x = -1; // A()中的局部变量
this->x = 0; // class的成员变量
::x = 1; }
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询