c++再次请高手解答一下小问题,谢谢。

2024-11-30 05:45:19
推荐回答(4个)
回答1:

楼上的说得有个错误,,,,
1.首先肯定您对函数的重载的解释是正确的,但是我还想补充说明下,static也是属于“函数类型”的一部分的。这样会较容易理解的吧o(∩_∩)o...
2.“Fun::i=2 即代表每个Fun定义的对象的i值皆为2 ”
这句话是错误的: Fun::i=2 是说明所有 的此类的对象公用这一个“i”任何对象都可以使用并且,更改.但是由于你的 语句中没有修改故,看不出这一点。
你把 语句改为return i++ 和i--就能看出我说的是对的了o(∩_∩)o...
这样能更全面了解下。
o(∩_∩)o...

回答2:

成员函数value()有非const和const之分
定义的fun1为非const变量
定义的fun2为const变量
所以fun1.value调用int value(){return i-1;}
fun2.value调用int value()const{return i+1;}
如果最后改成
cout<cout<则结果为
1 因为(2-1)=1
3 因为2+1=3
一开始定义Fun::i=2
即代表每个Fun定义的对象的i值皆为2

回答3:

这个程序有3点需要注意:
1、变量的域。在类前面定义的全局变量i和类里面定义的成员变量i的域是不同的。
2、static用在类成员变量上意味着这个变量是一个静态变量,只能初始化一次,且这个类的所有对象对这个变量来说是共用的关系,即一个对象改变了i的值,其他所有对象的i值都跟着变化。
3、const对象调用的方法也必须const方法。

回答4:

vlaue函数被重载,所以fun2实际调用的函数为value(){rutrun i+1;}