注册 登录
编程论坛 C++教室

关于复制构造函数的问题

八半个桑 发布于 2016-04-26 18:02, 3796 次点击
程序代码:
#include<iostream>
using namespace std;
class c
{
public:
    c(float _r){m_flr=_r;}
    c(c &p){m_flr=p.m_flr;}
    ~c(){}
    float getArea();
private:
    float m_flr;
};
float c::getArea()
{
    return 3.14*m_flr*m_flr;
}
void main()
{
    c r(3);
    cout << r.getArea() << endl;
    c r2(r);
   
    cout << r2.getArea() << endl;
}

这是一个计算圆的面积类,如何利用复制构造函数在第一个对象(r)的值的基础上加上3再传递给第二个对象(r2)?   
c r2(r+3) 这样可以吗?
3 回复
#2
仰望星空的2016-04-27 09:15
按照你的写法,需要重载个+号运算符,要不然没法类对象与float相加吧,
坐等大神完成这一操作,学习中~
#3
alice_usnet2016-04-27 13:10
同意2楼+1
程序代码:
#include<iostream>
using namespace std;
class c
{
public:
    c(float _r){m_flr=_r;}
    c(c &p){m_flr=p.m_flr;}
    c operator+(int n) { m_flr+=n; return *this; }
    ~c(){}
    float getArea();
private:
    float m_flr;
};
float c::getArea()
{
    return 3.14*m_flr*m_flr;
}
void main()
{
    c r(3);
    cout << r.getArea() << endl;
    c r2(r+3);
   
    cout << r2.getArea() << endl;
}
#4
八半个桑2016-04-27 17:39
回复 3楼 alice_usnet
如何重载“+”运算符?
1