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

拷贝函数为什么不可以重载?参数并不唯一啊?

当有类中有const限制的常量时 再自定义拷贝函数为什么可以重载

例如:

#include <string>

using namespace std;

class teacher

{

public:

//**********构造函数声明*****构造函数无返回值*******//

teacher(string name="ames",int age=18,int m=100);

teacher (const teacher &tea,int m);

teacher (const teacher &tea,int m ,int n);

void setname(string _name);

string getname();

void setgender(string _gender);

string getgender();

void setage(int _age);

int getage();

int getstudent();

void teach();


private:

string m_strName;

string m_strGender;

int m_iAge;

const int m_iStudent;

};


正在回答

4 回答

构造函数格式为Teacher(const Teacher&变量名),这应该算构造函数重载而非拷贝构造函数重载。

而且个人认为也可以这样理解,拷贝构造函数的形参是固定的,你定义了几个就有几个,如:

string m_strName;  string m_strGender;  int m_iAge;  const int m_iStudent;

当 Teacher t2=t1 时,拷贝构造函数是t1的四个都拷贝给了t2,才叫拷贝构造函数

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

teacher (const teacher &tea,int m);这个代码与原函数不一样,不算原来的拷贝函数。所以还是不能重载

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

后面不同的是变量名而不是参数,参数前面应该是有int,string等修饰的

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

构造函数的定义格式固定为C(const  C&  变量名)

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

举报

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

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

进入课程

拷贝函数为什么不可以重载?参数并不唯一啊?

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