为什么在c++中可以用::调用其他类的成员函数?

比如我在B类的成员函数实现中,可以这样写:intB::initial(){inti=A::getNumber();returni;}编译OK。为什么可以直接在b类中用::... 比如我在B类的成员函数实现中,可以这样写:
int B::initial(){
int i = A::getNumber();
return i;
}
编译OK。
为什么可以直接在b类中用::的形式调用其他类的函数?
有次,我用同样的方式调用C类的函数,就编译出错,说未实例化。
使用::的形式调用其他类成员函数的标准是什么?
展开
 我来答
xiaohuh421
2009-12-22 · TA获得超过904个赞
知道小有建树答主
回答量:897
采纳率:0%
帮助的人:379万
展开全部
只有静态成员这样调用才行,如果不是静态成员,可能在A::getNumber();这个函数中又调用了A类其它成员变量,这样就肯定会出错误了
百度网友350302d
2009-12-21 · TA获得超过669个赞
知道小有建树答主
回答量:1048
采纳率:0%
帮助的人:610万
展开全部
getNumber();函数是静态函数的话,就可以直接A::getNumber();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2015-10-25 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:893万
展开全部
双冒号 :: 操作符被称为域操作符(scope operator),含义和用法如下:
1.在类外部声明成员函数。void Point::Area(){};
2.调用全局函数;表示引用成员函数变量及作用域,作用域成员运算符 例:System::Math::Sqrt() 相当于System.Math.Sqrt()。
3.调用类的静态方法: 如:CDisplay::display()。
把域看作是一个可视窗口全局域的对象在它被定义的整个文件里,一直到文件末尾都是可见的。在一个函数内被定义的对象是局域的(local scope), 它只在定义其的函数体内可见。每个类维持一个域,在这个域之外 ,它的成员是不可见的。类域操作符告诉编译器后面的标识符可在该类的范围内被找到。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式