Dre*_*rew 0 c++ scope global-variables public-members difference
如果在类中声明公共变量,则可以从也是该类成员的任何函数中修改该变量.
如果在函数内声明变量,则其范围不会超出函数的范围.
那么公共类变量本质上是一个全局变量,可以被类的任何成员访问和更改吗?
如果是这样的话,全局变量和公共变量之间有什么区别?
您缺少的更重要的语义是类成员变量(除非它是static)特定于该类的每个实例.例如
class Foo
{
public:
Foo() = default;
int x;
};
Run Code Online (Sandbox Code Playgroud)
如果我要说
Foo a{};
Foo b{};
a.x = 1;
b.x = 7;
a.x != b.x; // value is different
&a.x != &b.x // address is different
Run Code Online (Sandbox Code Playgroud)
请注意,成员变量x具有不同的值,具有不同的地址(因为它完全不同int),并且属于每个实例Foo.
现在提一下static,请注意我不能这样做
Foo::x = 5; // only works if x is static
Run Code Online (Sandbox Code Playgroud)
因为我需要一个实际的实例的Foo用于其访问它的成员变量.相反,static成员不需要实例,并且整个类具有共享的该成员的单个实例.
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |