java构造函数赋值,复制构造函数或赋值运算符?我错过了什么?

我正在尝试实现一个复制构造函数和一个重载的赋值构造函数 . 我有一个有三个数据成员的Employee类 . 1-name 2-title 3-salary .

Employee::Employee(const Employee &emp)

{

name = emp.name;

title = emp.title;

salary = emp.salary;

cout << "\nOverloaded copy constructor called\n";

}

Employee Employee::operator = (const Employee &emp) //Overloading the assignment operator.

{

name = emp.name;

title = emp.title;

salary = emp.salary;

cout << "\nOverloaded assignment operator called\n";

return emp; //Or return *this.

}

这是我不明白的:

1-我没有't got to the 1712222 pointer. Should my overloaded assignment operator return this or the emp object. Because it seems to me that that object in the parameter is the right hand object at the assignment. So shouldn' t我用 this返回左手对象(如果这是*将要做什么)?

2-在main函数中,我尝试先调用赋值运算符,然后调用复制构造函数 . 所以我期待着我会看到我输出的cout语句:

重载的拷贝构造函数被调用

调用重载赋值运算符

重载的拷贝构造函数被调用

重载的拷贝构造函数被调用

为什么会这样?

3 - 我必须用const传递对象吗?我正在学习的这本书没有 .

在我写的主要内容中

Employee x;

x = another;

Employee y = x;

"another"只是我之前在代码中初始化的一个(命名不佳的)Employee对象 .

所以不应该是第一个分配输出

"Overloaded assignment operator called"和第二个作业(根据我的理解不是作业而是副本)输出"Overloaded copy constructor called"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值