C++的问题。

C++的问题:假如在类中声明一个inta;再在全局声明一个inta;在类成员函数怎么来区别两个?... C++的问题:假如在类中声明一个int a ;
再在全局声明一个int a;在类成员函数怎么来区别两个?
展开
 我来答
delaprelson
2008-05-11 · 超过42用户采纳过TA的回答
知道答主
回答量:128
采纳率:0%
帮助的人:0
展开全部
如果int a 是一个局部变量,比如说在函数内部,void f(){ int a ;}
那么,这个a 的生存周期只有在调用void f时a 才出现,在离开f时,a自动被消除,除了void f中能使用a之外,任何编译单位都不能访问a
如果int a是一个全局变量,那么a被创建是在编译器执行的时候发生.a在本编译单位内的任何一个作用域内是可见的,为了与其他变量区分开,通常用::a区分开与其他的,诸如局部变量void f(){ int a ;},如果在void f()中使用全局变量a,就要使用::a,与局部变量a区分开,这时,::a是全局的,a是局部的.但如果void f()中没有局部变量a,直接使用a,就是那个全局的变量a
在类中定义一个成员data,都要有作用域指定.如:class A{
public:
int a ;
};
A::a就是A类中的一个成员a,或者:
A instance1;
instance1.a;
A* pi=&instance1;
pi->a;
xja86238168
2008-05-10 · TA获得超过702个赞
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:195万
展开全部
作用范围不一样,你要是在类里面如果在成员函数里面更改的值是全局变量的(a不是类的私有成员),如果你类有一个私有成员,那么对a的更改是 改那个成员函数的 ,对全局变量没影响。总之,你记住是先执行小范围的变量改变。

你要是想安全点去区别,那就在类成员里面加上类名::a,如果类名是m,那么就写成m::a(::号是作用域符号,是管作用域的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c6f1823c2
2008-05-10 · 超过19用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:69.2万
展开全部
要访问一个不属于任何类的变量,可以在它的前面加上::就可以了。
但是我觉得你这样做不太好,因为编写类要实现高内聚性,低耦合,
但是你在成员函数使用全局变量,就违反了该规则,不太好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CIW_BLUE
2008-05-10 · TA获得超过487个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:0
展开全部
#include <iostream>
using namespace std;
int a;
class A
{
public:
void Fun1() //访问类的a
{
a = 10;
}
void Fun2()//访问全局变量a
{
::a = 10; //在变量前加::就是表示访问类外边的变量
}
int a;
};
int main()
{
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zangbaise
2008-05-10 · TA获得超过515个赞
知道小有建树答主
回答量:714
采纳率:0%
帮助的人:463万
展开全部
用作用域限定符啊'::'就是这个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式