首页 > 编程语言 > 详细

C++程序设计方法2:基本语法2

时间:2017-03-26 21:09:30      阅读:221      评论:0      收藏:0      [点我收藏+]

对象赋值-赋值运算符重载

赋值运算符函数是在类中定义的特殊的成员函数

典型的实现方式:

ClassName& operator=(const ClassName &right)
{
    if (this != &right)
    {
      //将right的内容复制给当前的对象
}
return *this; }
#include <iostream>
using namespace std;

class Test
{
    int id;
public:
    Test(int i) :id(i) { cout << "obj_" << id << "created\n"; }
    Test& operator= (const Test& right)
    {
        if (this == &right)
            cout << "same obj!" << endl;
        else
        {
            cout << "obj_" << id << "=obj_" << right.id << endl;
            this->id = right.id;
        }
        return *this;
    }
};

int main()
{
    Test a(1), b(2);
    cout << "a = a:";
    a = a;
    cout << "a = b:";
    a = b;
    return 0;
}

流运算符重载函数的声明

istream& operator>>(istream& in, Test& dst);

ostream& operator<<(ostream& out, const Test& src);

备注:

函数名为:
  operaotor>>和operator<<

返回值为:
  istream& 和ostream&,均为引用

参数分别:流对象的引用,目标对象的引用。对于输出流,目标对象还是常量

#include <iostream>
using namespace std;

class Test
{
    int id;
public:
    Test(int i) :id(i)
    {
        cout << "obj_" << id << "created\n";
    }
    friend istream& operator >> (istream& in, Test& dst);
    friend ostream& operator << (ostream& out, const Test& src);
};
//备注:以下两个流运算符重载函数可以直接访问私有成员,原因是其被声明成了友元函数
istream& operator >> (istream& in, Test& dst)
{
    in >> dst.id;
    return in;
}

ostream& operator << (ostream& out, const Test& src)
{
    out << src.id << endl;
    return out;
}

int main()
{
    Test obj(1);
    cout << obj;
    cin >> obj;
    cout << obj;
}

 

C++程序设计方法2:基本语法2

原文:http://www.cnblogs.com/hujianglang/p/6623999.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!