全局变量
在函数外定义的变量,可为本源文件中其它函数所公用。
存储:静态区域,程序一启动就会分配存储空间,直到程序结束才会释放。
作用域:从定义变量的位置开始到本源文件结束。
成员变量
成员变量是存在类中声明的。 依类而生,离开类之后就不是成员变量。
作用域:类,成员变量只能通过对象访问。
存储 :堆 举例:i是成员变量
class A
{
public:
int i;
void f();
}
void A::f()
{
i = 1;
}
本地变量
写在函数或代码块中的变量, 我们称之为局部变量
作用域: 从定义的那一行开始, 一直到遇到大括号或者return
存储 : 栈 举例:local是局部变量
class A
{
public:
int i;
void f();
}
void A::f()
{
int local = 1;
}
就近原则
局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。 如果我需要区分同名的局部和成员,可以使用this指针.
class A
{
public:
int i;
void f();
}
void A::f(int i)
{
this->i = i;
}