精英盒子 -> 程序设计 -> 关于“至于你信不信,我反正信了”的C++翻译是否可以运行的相关试验 [打印本页]

abreto 2011-08-13 13:45

关于“至于你信不信,我反正信了”的C++翻译是否可以运行的相关试验

[font='Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif]
N久以前,我在微博上发出了“至于你信不信,我反正信了”的C++翻译:
  1. if( you.believe(it) || !you.believe(it) )
  2.         i.believe(it) = 1;

这段代码是否可以运行呢?回答是肯定的,我们可以让believe返回一个引用;y,就是这样。
  1. class Person
  2. {
  3.      int ifThisBelieveIt[2];
  4. public:
  5.      Person(){ifThisBelieveIt[0] = 0;}
  6.      int & believe(int sth)
  7.      {
  8.           return ifThisBelieveIt[sth];
  9.      }
  10. };

然后
  1. /* | */
  2. int main(void)
  3. {
  4.      Person you, i;
  5.      int it = 0;
  6.      if(you.believe(it) || !you.believe(it))
  7.           i.believe(it) = 1;
  8.      return 0;
  9. }

经测试,可以编译运行,运行后i.believe(it)的值为1。
这里believe返回的是一个私有成员的引用,这样会破坏类的封装性,在实际开发中不建议这样写。
(不知道神马是引用?由于该链接地址导致从phpwind到铅版迁移失败,因此被屏蔽猛击这里[/url])

jybox 2011-08-17 14:22
我承认我C++真的没学好,唉....受打击了

abreto 2011-08-17 17:20

iol 2011-08-17 18:37
....神马贴? 木有错误.为什么不能运行

jybox 2011-08-17 19:42
这个是个很复杂的问题............

iol 2011-08-17 21:08
我看着是人为复杂问题...

jybox 2011-08-17 21:48
你终于说到点子上了




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.038967 second(s),query:5 Gzip enabled