免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5383 | 回复: 9
打印 上一主题 下一主题

[C++] const成员函数必须初始化吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-17 15:58 |只看该作者 |倒序浏览
代码如下

class myclass
   {
    public :
    static void mf(int)
    {  };
    char mf(char);
   };
   int main()
   {
    const myclass mc;
    int iobj;
    mc.mf(iobj);
   }


然后编译: g++ -o static_const_test static_const_test.cpp
static_const_test.cpp: In function `int main()':
static_const_test.cpp:10: error: uninitialized const `mc'

论坛徽章:
0
2 [报告]
发表于 2007-12-17 16:00 |只看该作者
是的,因为const变量无法修改,所以如果不在初始化的时候赋值那么就没有机会给它赋值了.

论坛徽章:
0
3 [报告]
发表于 2007-12-17 16:02 |只看该作者
按照c++的语法,在上面的程序中,myclass这个类应该有缺省构造函数可以初始化mc这个对象啊

论坛徽章:
0
4 [报告]
发表于 2007-12-17 16:10 |只看该作者

回复 #3 declare 的帖子

跟有没有默认构造函数无关的.

你试着写const int i;
这样的代码也是编译过不去的,因为const变量需要的是赋值操作.

论坛徽章:
0
5 [报告]
发表于 2007-12-17 16:16 |只看该作者
你不定义的话, 除非不要, 缺省构造函数是不会真正产生的

你在myclass中加一个构造函数
myclass()
     {
     }

试试


原帖由 declare 于 2007-12-17 16:02 发表
按照c++的语法,在上面的程序中,myclass这个类应该有缺省构造函数可以初始化mc这个对象啊

论坛徽章:
0
6 [报告]
发表于 2007-12-17 16:19 |只看该作者
原帖由 ypxing 于 2007-12-17 16:16 发表
你不定义的话, 除非不要, 缺省构造函数是不会真正产生的

你在myclass中加一个构造函数
myclass()
     {
     }

试试




是的,加了就可以了;可是,还有个问题,const的对象为什么能调用static成员函数呢?

论坛徽章:
0
7 [报告]
发表于 2007-12-17 16:23 |只看该作者
why not?

原帖由 declare 于 2007-12-17 16:19 发表


是的,加了就可以了;可是,还有个问题,const的对象为什么能调用static成员函数呢?

论坛徽章:
0
8 [报告]
发表于 2007-12-17 16:34 |只看该作者
static是和对象无关的,没有this指针,const对象应该是不能调用它了

论坛徽章:
0
9 [报告]
发表于 2007-12-17 16:40 |只看该作者
这是从哪里学来得???

对于static成员函数
既可以myclass::mf(0);
也可以mc2.mf(0); //mc2是myclass的一个实例

原帖由 declare 于 2007-12-17 16:34 发表
static是和对象无关的,没有this指针,const对象应该是不能调用它了

论坛徽章:
0
10 [报告]
发表于 2007-12-17 16:59 |只看该作者
原帖由 declare 于 2007-12-17 16:19 发表


是的,加了就可以了;可是,还有个问题,const的对象为什么能调用static成员函数呢?

const对象调用const成员函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP