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

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

典型的实现方式:

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(), b();
cout << "a = a:";
a = a;
cout << "a = b:";
a = b;
return ;
}

流运算符重载函数的声明

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();
cout << obj;
cin >> obj;
cout << obj;
}

C++程序设计方法2:基本语法2的更多相关文章

  1. 《程序设计方法》【PDF】下载

    内容简介 <程序设计方法>主要以方法为主导,结合C语言,把程序设计方法学研究中若干成熟的理论和方法用通俗易懂的语言描述出来.<程序设计方法>还选取趣味性强.技巧性高.能够启发学 ...

  2. mooc- 基本程序设计方法week1,week2

    学习了第一单元我们几本可以写出10行左右的代码. week1:python编程之基本方法 1.从计算机到程序设计语言: 理解计算机:计算机是能够根据一组指令操作数据的机器. 功能性:可以进行数据计算 ...

  3. Entity Framework 基于方法的查询语法

      实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发 ...

  4. EF基于方法的查询语法

    实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发人员 ...

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

    初始化列表 int a[] = {1,2,3}; int a[]{1,2,3} 以上两个式子等价 int a = 3+5: int a = {3+5}; int a(3+5); int a{3+5}; ...

  6. ruby创建某些“关键字”方法别名的语法

    begin和end是ruby的关键字,但是Range中也有名称为begin和end的实例方法.现在问题来了:怎么创建它们的别名方法? 如果用class Range;alias begin_x begi ...

  7. ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作

    查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ...

  8. iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法

    本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS ...

  9. Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据

    jquery.tmpl.js 是一个模板js  ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...

随机推荐

  1. IDEA复制项目操作

  2. Spring4.x 基础

    把以下 jar 包加入到工程的 classpath 下: 搭建Spring开发环境 Spring 的配置文件: 一个典型的 Spring 项目需要创建一个或多个 Bean 配置文件, 这些配置文件用于 ...

  3. Jmeter入门(压力测试)

    Jmeter介绍 Jmeter是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试). 而且用Jmeter 来测试 Restful API, 非常好用. ...

  4. Codeforces 725E Too Much Money (看题解)

    Too Much Money 最关键的一点就是这个贪心可以在sqrt(n)级别算出答案. 因为最多有sqrt(n)个不同的数值加入. 我们可以发现最优肯定加入一个. 然后维护一个当前可以取的最大值, ...

  5. PAT (Basic Level) Practise - 我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...

  6. Tomcat启动分析(转自:http://docs.huihoo.com/apache/tomcat/heavyz/01-startup.html)

    Tomcat启动分析 1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servl ...

  7. Java中 输入字符串的时候next()和nextLine()有什么区别

    假设有一段文本如下:abc def ghijkl mno pqr stuvw xyz 用next(),第一次取的是abc,第二次取的是def,第三次取的是ghij用nextLine(),第一次取的是a ...

  8. 动态规划状态压缩-poj1143

    题目链接:http://poj.org/problem?id=1143 题目描述: 代码实现: #include <iostream> #include <string.h> ...

  9. 589. N叉树的前序遍历

    [题目] 给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. [解析] """ # Definiti ...

  10. P2158 [SDOI2008]仪仗队

    P2158 [SDOI2008]仪仗队图是关于y=x对称的,横纵坐标一定是互质的否则在之前就被扫过了,所以就可以用欧拉函数再*2就完了. #include<iostream> #inclu ...