• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
p-boost-q
博客园    首页    新随笔    联系   管理    订阅  订阅
运算符重载方法1
#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class A
{
    public:
        A();
        A(int initialValue);
        A add(const A & src);
        void setValue(int value);
        int show();
    private:
        int mValue;
};

A::A()
:mValue(0)
{
    
}
A::A(int initialValue)
:mValue(initialValue)
{
    
}
void A::setValue(int value)
{
    mValue = value;
}
A A::add(const A & src)
{
    A newA;
    newA.setValue(mValue + src.mValue);
    return newA;
}
int A::show()
{
    std::cout << "value : " << mValue << std::endl;
}


int main(int argc, char** argv) 
{
    A a1(4);
    A a2(5);
    A a3 = a1.add(a2);
    a1.show();
    a2.show();
    a3.show();
    return 0;
}

结果是:

value : 4
value : 5
value : 9

在方法的是现实中创建了一个newA的A,返回的是newA而不是newA的引用,否则程序报错,因为add()方法结束后newA超出作用域,因此被销毁返回引用将会是悬挂引用。

 

posted on 2019-01-29 13:15  p-boost-q  阅读(170)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3