| abreto |
2011-08-13 13:45 |
关于“至于你信不信,我反正信了”的C++翻译是否可以运行的相关试验
[font='Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif] N久以前,我在微博上发出了“至于你信不信,我反正信了”的C++翻译:- if( you.believe(it) || !you.believe(it) )
- i.believe(it) = 1;
这段代码是否可以运行呢?回答是肯定的,我们可以让believe返回一个引用;y,就是这样。- class Person
- {
- int ifThisBelieveIt[2];
-
- public:
- Person(){ifThisBelieveIt[0] = 0;}
- int & believe(int sth)
- {
- return ifThisBelieveIt[sth];
- }
- };
然后- /* | */
- int main(void)
- {
- Person you, i;
- int it = 0;
-
- if(you.believe(it) || !you.believe(it))
- i.believe(it) = 1;
-
- return 0;
- }
经测试,可以编译运行,运行后i.believe(it)的值为1。 这里believe返回的是一个私有成员的引用,这样会破坏类的封装性,在实际开发中不建议这样写。 (不知道神马是引用?由于该链接地址导致从phpwind到铅版迁移失败,因此被屏蔽猛击这里[/url]) |
|