为了账号安全,请及时绑定邮箱和手机立即绑定

拷贝构造函数和const

58631b680001dbdd05000252.jpg

58631b690001d8bd05000128.jpg


各位大佬好!!

我在这里定义了一个默认的构造函数,带有初始化列表,以便将const初始化。

Teacher::Teacher(string _name, int _age, int _m):m_strName(_name),m_iAge(_age),m_iNumber(m){

}

还定义了一个拷贝构造函数

Teacher::Teacher(const Teacher&tea)

{

    cout << "This is the copy constructor" << endl;

}

 

 

其中,m是一个const常量,在声明时如下:

const int m;

 

 

希望在进行对象间的赋值的时候调用此拷构造函数,可是!!这里给我报了一个错

error: uninitialized const member in 'const int'

 

C++小白来请教为什么……?是不是有拷贝构造函数的类不能有const常量?

正在回答

4 回答

http://img1.sycdn.imooc.com//58b138990001874107370194.jpg你看红色框框给你标记出来的地方,你这参数传递不正确,前后一致就行,当然也得跟private里面的成员变量保持一致。

0 回复 有任何疑惑可以回复我~

如果没错的话,错误应该是说,不能用用一个常量给另一个常量赋值。

还有就是,为什么也要把m也设置成常量呢?它不是应该作为一个形参吗?在声明构造函数的时候当作默认参数就OK啦

0 回复 有任何疑惑可以回复我~

首先,拷贝构造函数与const变量没什么大的关系。

再看你的const int m;在这儿为什么不给m赋值呢?不给它赋值,又怎么通过m_iNumber(m)使得m_iNumber得到确定的值呢?

还有就是报错,就是告诉你,使用了未初始化的量

(你可以先给m赋一个值试试)

0 回复 有任何疑惑可以回复我~

拷贝构造函数那块是不是要用初始化列表

Teacher::Teacher(const Teacher& tea):m_strName(_name),m_iAge(_age),m_iNumber(m){

}


2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

拷贝构造函数和const

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信