C++运算符重载函数作为类成员函数和友元函数

C++运算符重载函数作为类成员函数

1.1成员函数的重载运算符左侧是一个类对象,而且与运算符函数类型相同。
因为必须通过类的对象去调用该类的成员函数,而且只有运算符重载函数和返回值类型相同,运算结果才有意义。
1.2将双目运算符重载为友元函数时,在形参表列中必须有两个参数,不能省略,形参的顺序任意。
1.3在使用运算表达式的时候,运算符左侧与函数第一个参数对应,右侧与第二个参数对应。
1.4C++规定,有的运算符(赋值运算符,下标运算符,函数调用运算符)必须定义为类的成员函数,有的运算符则不能定义为类的成员函数(如流插入“<<”和流提取“>>”,类型转换运算符)
1.5一般将单目运算符重载为成员函数,将双目运算符重载为友元函数。
1.6有的编译系统不能把成员函数重载为友元函数,如VC++ 6.0这时把#include <iostream>改成#include<iostream.h>
1.7一个运用重载的例子:
#include <iostream>
 
using namespace std;
class Complex
{
public:
    Complex(double r,double i):real(r),image(i){}
    Complex(){real=0;image=0;}
    Complex operator+(Complex &);
    friend Complex operator+(int i,Complex &c);
    friend Complex operator+(Complex &c,int i);
    void display();
private:
    double image,real;
};
Complex Complex::operator+(Complex &c)
{
    Complex c1;
    c1.image=image+c.image;
    c1.real=real+c.real;
    return c1;
}
Complex operator+(int i,Complex &c)
{
    return Complex(i+c.real,c.image);
}
Complex operator+(Complex &c,int i)
{
    return Complex(i+c.real,c.image);
}
 
void Complex::display()
{
    cout << "(" << real << "," << image << ")" << endl;
}
 
int main()
{
    Complex c1(1,2);
    Complex c2(2,3);
    Complex c3=c1+c2;
    Complex c4=1+c1;
    Complex c5=c1+1;
    c1.display();
    c2.display();
    c3.display();
    c4.display();
    c5.display();
    return 0;
}
 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言辅导试题答案,C语言试题含答案).doc

一、单项选择题(在每小题的四个备选答案中&#xff0c;选出一个正确的答案&#xff0c;并将其代码填入题干后的括号内。每小题1分&#xff0c;共20分)1&#xff0e;程序中定义以下宏 #define S(a,b) a*b若定义 int area; 且令areaS(31,34),则变量area的值为( )A 10B 12C 21D 28…

C++重载流插入运算符与流提取运算符

C重载流插入运算符与流提取运算符 1.1 "<<" 流插入运算符&#xff0c;">>"流提取运算符。1.2对“<<”和“>>”重载的函数的形式如下&#xff1a;istream & operator >> (istream &,自定义的类&);ostream & …

c语言tcp push函数,如何在FreeBSD中使用TCP_NOPUSH调用sendfile之前添加头文件

我知道技术上FreeBSD中的TCP_NOPUSH和Linux中的TCP_CORK假设是类似的。如何在FreeBSD中使用TCP_NOPUSH调用sendfile之前添加头文件在Linux中&#xff0c;我可以设置TCP_CORK&#xff0c;发送头文件sendfile()&#xff0c;并且取消设置TCP_CORK以在文件前面插入头文件。在FreeBS…

C++不同数据类型的转换

C不同数据类型的转换 C标准类型数据的转换 1.1隐式类型转换&#xff0c;如&#xff1a; int i6; ii7.5; 1.2显式类型转换,如: 类型名(数据) 如int(89.5) 在C语言中 (int)89.5 建议用C的方式。 C用转换构造函数进行类型转换 1.1转换构造函数也是一种构造函数&#xff…

ev3的c语言编程软件,乐高EV3编程软件教育版下载

乐高EV3编程软件教育版官方版是一款用于机器人编程的应用工具&#xff0c;乐高EV3编程软件教育版最新版可以通过可视化图标形式编程&#xff0c;用以控制机器人的各种动作指令&#xff0c;乐高EV3编程软件教育版操作起来比较简单&#xff0c;发挥你的想象&#xff0c;创造无限的…

C++继承与派生

C继承与派生 1.1 C中可重用机制是通过继承这一个机制来实现的。1.2在C中所谓“继承”就是在一个已存在的类的基础上建立一个新的类&#xff0c;已存在的类(例如"马")称为“基类(base class)”或“父类(father class)”&#xff0c;新建立的类(例如“白马”)称为“派生…

Android代码删除通知,Android:从通知中删除通知b

Android&#xff1a;从通知中删除通知b我已经创建了一个应用程序&#xff0c;并且我设法在android通知栏中添加通知。 现在我需要示例如何从事件通知栏中删除该通知&#xff1f;11个解决方案197 votes你可以尝试这个快速代码public static void cancelNotification(Context ctx…

C++三大继承与多级派生

C公用继承 1.1在定义一个派生类时把派生方式指定为public的&#xff0c;称为公用继承&#xff0c;派生类称为公用派生类&#xff0c;基类称为公用派生类。1.2关于公用继承的一段代码:#include <iostream> using namespace std; class student { public: void display(); …

C++派生类的构造函数和析构函数

C派生类的构造函数和析构函数 派生类的构造函数和析构函数 #include <iostream> using namespace std; class student { public: student(int num,char* n):number(num),name(n){} ~student(){cout << "student deconstruted" << endl;} protecte…

android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线

与搭载Android 2.3系统的OPPO R807不同&#xff0c;OPPO R817搭载了Android 4.0系统。不过这款手机仍旧舍弃了Android系统的原生界面&#xff0c;因此两款手机在界面上的变化其实并不非常大。升级Android 4.0后界面变化不大内置多款主题与解锁样式可更改字体及SIM卡信息OPPO R8…

android sqlite 示例,android SQLite数据库使用示例

数据库的操作&#xff0c;需用到数据库类SQLiteDatabase&#xff0c;重写管理员类SQLiteOpenHelper&#xff0c;用Cursor查询数据一、操作数据库的辅助类&#xff0c;包含打开、关闭、增删改查方法//自定义的数据库的接口&#xff0c;其中包含SQLiteHelperpublic class NotesDb…

C++虚基类

C虚基类 1.1虚基类的作用&#xff1a;如果一个派生类有多个直接基类&#xff0c;而且这些直接基类又有一个共同的基类&#xff0c;则在最终的派生类中会保留该间接共同基类的多份同名成员。所以为了解决这个问题&#xff0c;C提供虚基类的方法&#xff0c;使得在继承间接共同基…

android清除图案锁 位置,安卓手机清除锁屏密码、锁屏图案的教程

来源&#xff1a;安卓网2014-01-21/12:15本文分享一个安卓手机清除锁屏密码以及锁屏图案的几种方法和详细教程。如果锁屏密码、或者图形锁屏密码忘记了怎么办&#xff0c;怎么清除呢?下面小编整理了3种安卓手机清除锁屏图案密码的方法。↓↓↓准备工作&#xff1a;1.确保已经安…

C++多态性

C多态 1.1多态性(polymorphism)是面向对象程序设计的一个重要特征。1.2从系统实现的角度看&#xff0c;多态性分两类&#xff1a;静态多态性与动态多态性。静态多态性是通过函数重载(运算符重载也是函数重载)来实现的。它又称为编译时多态。动态多样性是在程序运行过程中才动态…

ue4 android vulkan,在Android用vulkan完成蓝绿幕扣像

效果图(1080P处理)因为摄像头开启自动曝光&#xff0c;画面变动时&#xff0c;亮度变化导致扣像在转动时如上。这个demo主要测试二点&#xff0c;一是测试ndk camera集成效果,二是本项目对接外部实现的vulkan层是否方便&#xff0c;用于以后移植GPUImage里的实现。我简化了在an…

C++静态关联与动态关联

1.1确认具体对象的过程叫关联(binding)&#xff0c;在这里指把一个函数与类对象捆绑在一起&#xff0c;建立关联。 1.2什么是静态关联&#xff1f; 函数重载和通过对象名调用的虚函数&#xff0c;在编译时即可确定其调用的虚函数属于哪一个类&#xff0c;其过程称为静态关联&…

html5 规定输入字段,HTML5 Input属性详解

本篇教程探讨了HTML5 Input属性详解&#xff0c;希望阅读本篇文章以后大家有所收获&#xff0c;帮助大家HTML5CSS3从入门到精通 。<value 属性value 属性规定输入字段的初始值&#xff1a;readonly 属性readonly 属性规定输入字段为只读(不能修改)&#xff1a;readonly 属性…

html5程序自动登录,Jtro的技术分享:网页调起unity的exe程序并自动登录

思路是这样&#xff1a;通过一个额外的exe文件来实现登录&#xff0c;并保存一个token文件&#xff0c;然后在unity的项目提交数据的时候读取这个token向服务器发送数据。下面是具体的方法&#xff1a;s这个需要用到WPF来编写&#xff0c;首先打开VS2017&#xff0c;选择创建WP…

C++纯虚函数与抽象类

纯虚函数 1.1纯虚函数是在声明虚函数时被“初始化”为0的函数。声明纯虚函数的一般形式为&#xff1a;virtual 函数类型 函数名 (参数列表) 0;如 virtual float area() const 0;1.2纯虚函数没有函数体&#xff0c;而且这是一个声明语句后面应有分号。1.3纯虚函数最后面的“0”并…

html 图片防盗链,【反防盗链】介绍一个对付图片防盗链的方法

悲催的声明&#xff1a;由于腾讯也采用了防盗链技术&#xff0c;本文方法已经失效了&#xff01;当我们想在文章里引用某张图片时&#xff0c;如果对方设置了防盗链&#xff0c;我们看到的将是404或forbidden或其他图片&#xff0c;而不是想要的那张图片&#xff0c;为此&#…