C++的代码,谁能给解释一下

现在需要执行这样一条语句:CC::Istc()->IniS();其中CC、Istc、IniS的定义都在下面了,本人菜鸟,着实看不太懂,请高人指点。类的定义以及在类外定义函... 现在需要执行这样一条语句:CC::Istc()->IniS();
其中CC、Istc、IniS的定义都在下面了,本人菜鸟,着实看不太懂,请高人指点。类的定义以及在类外定义函数,这些我是明白的,我不明白的是,“->”,感觉像是先执行了Istc()函数,然后执行的IniS()函数,各种不理解,求高手!!!

CC的定义:
class CC {
public:
~CC();
static CC * Istc();
int IniS();
private:
CC();
static CC *m_pIstc;
};
Istc的定义:
CC * CC::Istc() {
if (m_pIstc == NULL) {
m_pIstc = new CC;
}
return m_pIstc;
}
IniS的定义:
//comment: Initialize the GameServer
int CC::IniS() {
//此处代码省略。
}
展开
 我来答
和默默一起成长
2013-01-05 · 只有孩子,会把你当做整个世界去爱。
和默默一起成长
采纳数:126 获赞数:243

向TA提问 私信TA
展开全部
Istc()是CC中的一个静态成员方法,说一不需要实例,可以直接用类名调用,即CC::Istc(),Istc()返回的是一个CC*(cc类的一个指针),所以在调用成员方法IniS()的时候就需要用“->”,即CC::Istc()->IniS();

Ps:"->" 这个是指针调用的符号。
追问
这种调用的方法,可不可以这样理解:先执行Istc()函数,如果之前没有定义一个CC类就定义一个CC类,已经定义了就不需要再定义了,然后执行在这个类上执行IniS()函数。这样调用的好处就是为了防止没有定义类?
_whales
2013-01-05 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:508万
展开全部
先执行了Istc()函数,返回CC *;用返回的那个指针直接调用niS();

这里
CC::Istc()->IniS();

相当于 CC * t=CC::Istc(); t->IniS();
CC:: 作用域运算符。

前面可以是名空间,或类名,结构名等。
也可以是空白代表唯一的全局名空间。
这是C++才有的,C是没有的,不知新标准里加入了没有。

类的静态函数,类的静态变量,或类内部调用基类的同名函数时使用
追问
这种调用的方法,可不可以这样理解:先执行Istc()函数,如果之前没有定义一个CC类就定义一个CC类,已经定义了就不需要再定义了,然后执行在这个类上执行IniS()函数。这样调用的好处就是为了防止没有定义类?
追答
这里是一个所谓singleton模式,就是单件,是设计模式里的一种模式,就是一个类只生成一个唯一的实例对象,所有跟该类有关的操作只跟这一个对象打交道。必须通过类名调用而不是可以通过类名调用。它的构造函数是私有的外部不可以构造该对象!余下代码很好理解就不多说了!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龚炜林
2013-01-05 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:582万
展开全部
这是运算符优先级决定,请看参考连接。
在你这里,::域运算符和->是同一个优先级,但是结合顺序是从左至右,因此
CC::Istc()->IniS();

先执行
CC::Istc()
此时函数返回一个指向new出来的CC对象的指针,然后通过返回指针调用其成员函数IniS()
追问
这种调用的方法,可不可以这样理解:先执行Istc()函数,如果之前没有定义一个CC类就定义一个CC类,已经定义了就不需要再定义了,然后执行在这个类上执行IniS()函数。这样调用的好处就是为了防止没有定义类?
追答
不是这样,::是域运算符,是定位函数的位置。
CC::Istc()就是说要调用的函数是CC类的成员函数,这是直接访问类静态成员函数的方法,也是为了防止派生类多个同名函数调用时的歧义,比如
class A
{
public:
int a(){return 0;}
};
class B:public A
{
public:
int a(){return 0;}
};
int main()
{
B b;
b.A::a();是指定调用类A里的函数a
b.a();是调用类B的成员函数a
return 0;
}
这里并非你说的防止没有定义类。

参考资料: http://blog.csdn.net/nicky_zs/article/details/4053146

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式