第十一章:使用类

1、运算符重载   operator+  (take ‘+‘ for example)

  (1) 重载后必须至少有一个用户定义的操作数(struct class etc...),防止把一个C++标准的‘-’重载成‘+‘

  (2) 不能违反运算符原来的句法规则; 例如不能将‘%‘重载成一个操作数

   (3) 不能创建新运算符

   (4) 有些运算符不能重载    sizeof   ?:    .   .*     ::   etc....

  (5) 有些运算符只能通过成员函数重载   =   ()   []   ->

2、友元

  (1) friend XXX operator+(xxx,xxx);  运算符重载,非成员函数,但是可以访问私有成员;

  常用的友元:重载<<操作符  (常用的cout就是ostream类对<<重载过来的,)

  test_code:

  #include <iostream>
  using namespace::std;

class Time{
private:
  int min;
  int hour;
public:
  Time(int n,int m);
  friend ostream& operator<<(ostream & os, const Time & t);        //BTW: ostream处必须为引用;返回值为ostream& 保证可以实现cout << "xxx" << t << "xx"的语句
};

Time::Time(int n,int m){
  min = n;
  hour = m;
}

ostream& operator<<(ostream & os, const Time& t){
  os << t.hour << "hours. " << t.min << "minutes" ;

  return os;

}

int main(void){
  Time test(5,6);
  cout << "haha "  <<  test;
}

##print:haha 6hours.5minutes

(2)成员函数与非成员函数的一个小差别

  class Time{};

  Time operator+(const Time& t);

  friend Time operator+(const time & t1,const time & t2);

3、类的转换

  TBD

时间: 2024-11-07 03:05:15

第十一章:使用类的相关文章

第十一章:类和对象

一.类是对一群有共同特征的事物或事件的 集合.而类对象就是类的 实例化. 二.类中的成员对象: (1)一个类的所有对象对应同一个类对象,如现实世界中的动物是一种类, 植物也是一种类,可以理解人就是 动物类的一种对象,草是植物类的一种对象. 三.定义类对象 (1)类对象的生成过程,包括对象的声明.实例化和初始化.实例化一个对象就是通过new运算符为对象分配空间(类属于复合数据类型,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务).既可以在声明对象时实例化(创建)对象,

《Unity_API解析》 第十一章 Time类

Time类静态属性 realtimeSinceStartup属性:程序运行实时时间 public static float realtimeSinceStartup(){get;} 此属性用于返回从游戏启动到现在一运行的实时时间(只读),以秒为单位.此属性通常可用Time.time代替使用,但realtimeSinceStartup的返回值不收timeScale属性变化的影响. smoothDeltaTime属性:平滑时间间隔 public static float smoothDeltaTim

javascript高级程序设计 第十一章--DOM扩展

javascript高级程序设计 第十一章--DOM扩展DOM最主要的扩展就是选择符API.HTML5和Element Traversal Selectors API:定义了两个方法 querySelector() 和 querySelectorAll(),能够基于CSS选择符从DOM中取得元素.querySelector()方法接收一个CSS选择符,返回该模式匹配的第一个元素,querySelectorAll()接收的参数一样,但是返回NodeList实例: matchesSelector()

zabbix专题:第十一章 zabbix proxy分布式监控配置

zabbix专题:第十一章 zabbix proxy分布式监控配置             对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.co zabbix proxy分布式监控配置 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix proxy可以非常简便的实现了集中式.分

JS复习:第十、十一章

第十章 NodeList是一种类数组对象,用于保存一组有序的节点,可以通过位置来访问这些节点,但它并不是Array实例,将其转化为数组的方法: function converToArray(nodes){ var array = null; try{ array = Array.prototype.slice.call(nodes,0); //slice方法的参数 }catch(ex){ array = new Array(); for(var i = 0,len = nodes.length

第十一章 异常,日志,断言和调试

第十一章 异常,日志,断言,调试 由于程序的错误或一些外部环境的影响造成用户数据的丢失,用户就有可能不再使用这个程序了.为了避免,应该做到以下几点: 向用户通告错误 保存所有的操作结果 允许用户以适当的形式退出程序. 11.1 处理异常 当由于出现错误而使得某些操作没有完成,程序应该: 返回到一种安全状态,并能够让用户执行一些其他命令:或者 允许用户保存所有操作的结果,以适当的方式终止程序 异常处理的任务就是将控制权从错误产生的地方转移给能够处理这种错误的处理器.程序中可能出现的错误和问题: 用

《Java并发编程实战》第十一章 性能与可伸缩性 读书笔记

造成开销的操作包括: 1. 线程之间的协调(例如:锁.触发信号以及内存同步等) 2. 增加的上下文切换 3. 线程的创建和销毁 4. 线程的调度 一.对性能的思考 1 性能与可伸缩性 运行速度涉及以下两个指标: 某个指定的任务单元需要"多快"才能处理完成.计算资源一定的情况下,能完成"多少"工作. 可伸缩性: 当增加计算资源时(例如:CPU.内存.存储容器或I/O带宽),程序的吞吐量或者处理能力能相应地增加. 2 评估各种性能权衡因素 避免不成熟的优化.首先使程序正

2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(一) table、entity、service、dao

原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第二十一章 授予身份与切换身份(一) 1.使用场景 某个领导因为某些原因不能访问一些网站,他想把这个网站上的工作委托给秘书,但是他又不想提供账户.密码.此时可以使用shiro的 RunAs 功能. RunAs:允许一个用户假装为另一个用户(如果获得了允许)的身份进行访问. 注意,本章代码基于<第十六章 综合实例>,详细的数据模型及基本流程见该章. 2.表及数据

perl5 第十一章 文件系统

第十一章  文件系统 by flamephoenix 一.文件输入/输出函数  1.基本I/O函数    1)open函数    2)用open重定向输入    3)文件重定向    4)指定读写权限    5)close函数    6)print, printf和write函数    7)select函数    8)eof函数    9)间接文件变量  2.跳过和重读数据  3.系统读写函数  4.用getc读取字符  5.用binmode读取二进制文件二.目录处理函数  1.mkdir  2

C#高级编程(第六版)学习:第三十一章:Windows窗体

第三十一章 Windows窗体 创建Windows窗体应用程序 在文本编辑器中输入: /* * form.cs * a simple windows form * */ using System; using System.Windows.Forms; ? namespace NotepadForms { public class MyForm:System.Windows.Forms.Form { public MyForm() { } ? [STAThread] static void Ma