鬼火狼烟吧 关注:230贴子:5,304
  • 5回复贴,共1

偶尔究究语法...

取消只看楼主收藏回复

class A{
public:
void change();
void change() const;
};
void A::change()const{cout<<"const\n";};
void A::change(){cout<<"normal\n";};
int main()
{
 A s;
 s.change();
 getch();
 return 0;
}

运行结果是:normal
大哥,在这种情况下,对象s似乎被只能用
void A::change(){cout<<"normal\n";}
这个函数了,怎么在不改变类定义的情况下,使得s能用到
void A::change()const{cout<<"normal\n";}
呢?
是不是const的那个被普通的那个遮蔽了,但按理也是const遮蔽别人的呀
想不明白,这应该涉及到编译器的实现问题了吧


IP属地:湖南1楼2006-05-29 15:44回复
    换了几次函数声明和定义顺序,结果还是一样的


    IP属地:湖南2楼2006-05-29 15:49
    回复
      2026-06-27 19:17:33
      广告
      不感兴趣
      开通SVIP免广告
      是不是但有a()和a()const同时在类中声明的
      const的那个无效?
      我猜的...


      IP属地:湖南3楼2006-05-29 15:53
      回复
        在一楼两个成员函数定义后多打了两个";",虽不影响什么,但还是要纠正一下,呵呵


        IP属地:湖南4楼2006-05-29 15:59
        回复
          常量对象只能调用常量成员函数,这个我是知道的
          只是感叹为什么一般对象就无法调用const的那个了呢(有非const定义存在的情况下)?

          呵呵,其实我的C++不是刚学的了,有空的时候就会看看,只是因为不是计算机专业的,所以一直没有很系统很深入地学习它,觉得现在只是学到了一点皮毛而已


          IP属地:湖南7楼2006-05-29 16:27
          回复
            呵呵,这个“议题”讨论结


            IP属地:湖南12楼2006-05-29 17:00
            回复