欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

【初学者有关问题】类的缺省赋值函数什么时候失效啊

更新时间: 2015-03-04 06:12:28 责任编辑: Author_N10

 

【菜鸟问题】类的缺省赋值函数什么时候失效啊?
class   Test
{
        public:
        const   int   j;
Test():j(3){}
       
};
void   main(void)
{
Test   t2,t1;
t2=t1;       //(1)error   C2582:   'Test '   :   'operator   = '  
                  //function   is   unavailable
Test   tt=t2;//(2)
}
(1)为什么说赋值函数不能用?一般在什么时候赋值函数就失效了啊?
(2)为什么拷贝构造函数没有问题啊?

编译环境:vc++6.0

谢谢各位大哥大姐叔叔伯伯大妈婶婶。。。。。了


--参考方法--
j是const的,只能初始化,不能赋值.
Test tt=t2;//这是初始化tt,没问题

Test t2,t1;//在这里t2已经被初始化了,t2.j==3;
t2=t1; //错误!不能给t2的数据成员const int j赋值!
其实你想一想呀,要是const对象的值还能改变,那const还有什么意义呢?
--参考方法--
问题1:对于内含const members或者reference members的class,编译器是不会隐式生成一个assignment运算符的,这一点在effective c++条款45(第二版)中有说明

问题2:拷贝构造函数并不等同于assignment运算符的,因为它只在构造时候使用
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2015-03-04 06:12:28
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1185458/
本文WWW.DOC100.NET DOC100.NET版权所有。