首页 > 其他分享 >[Primer] 第 11 章 使用类

[Primer] 第 11 章 使用类

时间:2023-03-06 19:13:33浏览次数:38  
标签:11 友元 函数 成员 运算符 operator 使用 重载 Primer

第 11 章 使用类

11.1 运算符重载

使用 operator+ 等替代函数名即可实现运算符重载。

重载运算符后,原等式 sum = x + y; 将被替换为 sum = x.operator+(y);

11.2 计算时间:一个运算符重载示例

不要返回指向局部变量或临时变量的引用,执行完毕后它们将消失,引用将指向不存在的数据。

重载后的运算符至少有一个是用户定义的类型,避免重载标准类型运算符。

重载不能改变原操作数语法规则和优先级,也不能创建新运算符,不是所有运算符都可以被重载。

11.3 友元

将函数成为类的友元,可以赋予该函数与类内的成员函数相同的访问权限。

成员重载运算符函数左侧操作数为调用对象,非成员重载运算符左侧操作数为函数第一个参数。

将函数声明前加上关键字 friend 并放入类声明中即可声明友元函数,友元函数不是类的成员函数,但可以直接访问类成员。

常用的重载 << 运算符方法为 friend ostream & operator<<(ostream &out, const Obj &obj) { out << ...; return out; }

11.4 重载运算符:作为成员函数还是非成员函数

对于某些运算符来说,成员函数是唯一的选择,有时使用非成员函数更好。

11.5 再谈重载:一个矢量类

11.6 类的自动转换和强制类型转换

只有一个参数的构造函数可以作为转换函数,使得对于构造函数 Stone(double x); 来说,Stone s = 12.3; 可以被隐式转换为 Stone 对象。在构造函数前使用关键字 explicit 可以关闭这种特性。

同样也可以用转换函数做相反的转换,在类声明中添加函数原型 operator double() const; 即可,转换函数虽然没有声明返回类型,但必须返回转换后的值。

标签:11,友元,函数,成员,运算符,operator,使用,重载,Primer
From: https://www.cnblogs.com/futureknight/p/17185016.html

相关文章

  • 使用pycharm2022社区版搭建Django
    因为使用的是pycharm社区版,免费的没有直接搭建Django项目,所以查了半天资料,摸索了半天,才跑起来,用此文记录下。1.使用pycharm创建项目,安装项目创建好后,大概会有个虚拟环......
  • 如何使用JDBC将Cordova应用程序连接到MySQL数据库?
    不建议使用JDBC直接将您的Cordova应用程序连接到MySQL数据库,因为它会带来安全风险.移动设备通常受到安全漏洞的约束,并且从移动应用程序连接到数据库会增加暴露敏感信息的风......
  • mac使用Openconnect代替Cisco Anyconnect
    2020-05-22CiscoAnyconnect这玩意感觉不好使,换掉它,换成开源的Openconnect。使用brew安装贼方便,先安装homebrew,参考知乎大神的脚本,已经替换为了国内地址。/bin/zsh-c......
  • React 中使用React-Router
    React-Router帮助我们实现单页应用的路由跳转功能1.简单路由src/pags/home.jsconstHome=()=>{return(<div>Home</div>);};src/Routes.jsimpo......
  • Orcale 11 Linux 64 安装包下载
    OracleDatabase11gRelease2(11.2.0.1.0)forMicrosoftWindows(64-bit)http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_database_1of2.ziphttp:/......
  • 使用python多线程检测ip地址
    #检测得ip地址在C:\Users\admin\Desktop\iplist.txt文件中importsubprocessimportthreadingimportIPyimportrefromqueueimportQueueimporttimeip_use=[]#检......
  • tcpdump使用指南
    全网最详细的tcpdump使用指南 今天要给大家介绍的一个Unix下的一个 网络数据采集分析工具,也就是我们常说的抓包工具。与它功能类似的工具有wireshark,不同的......
  • stegsolve与zsteg的使用
    zsteg介绍:用来检测PNG和BMP中隐藏数据的工具,可以快速提取隐藏信息使用环境:kalikali自带zsteg,可以用这个指令使用geminstallzsteg下载完之后查看使用方法sudozsteg......
  • SpringBoot+Vue中使用AES进行加解密(加密模式等对照关系)
    场景若依前后端分离版本地搭建开发环境并运行项目的教程:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662在上面搭建起来前后端架构之后,在前后端......
  • 银河麒麟v10 sp1 安装 PostgreSQL 11.16
    一、安装环境   操作系统:银河麒麟v10 sp3 x86_64   内核版本:   PostgreSQL版本:11.16二、安装过程2.1下载源码包创建目录mkdir-p/tools/postgresql......