C++笔试专题一:运算符重载
一:下面重载乘法运算符的函数原型声明中正确的是:(网易2016校招)
A:MyClass operator *(double ,MyClass);
B:MyClass operator *(MyClass ,MyClass);
C:MyClass operator *(double ,double);
D:MyClass operator *(MyClass ,double);
A:一元运算符
B:二元运算符
C:A或者B都可以
D:重载错误
A:Data operator+(Data);
B:Data operator(Data);
C:operator+(Data,Data);
D:Data+(Data);
答案选A:成员函数,双目单参数,默认this做左参数。
/*c++运算符重载****************/
/********************
5类运算符不能重载:关系运算符.,成员指针运算符*,作用于分辨符*,sizeof运算符,三目运算符:?
不能改变运算符的操作数个数
不能改变原有运算符的优先级
不能改变运算符原有的结合特性
不能改变运算符对与定义类型数据的操作方式。
********************
运算符重载有两种方式:
1:友元函数
friend 类型 operator@(参数表);类外不需要加friend
不能重载的四个:= () [] ->
2:成员函数
类型 operator@(参数表)
参数默认传入了一个this
*********************/ #include <iostream>
using namespace std; class complex{
private:
double real,imag;
public:
complex(double r = ,double i = ){
real = r;
imag = i;
}
friend complex operator+(complex om1,complex om2);
friend complex operator*(complex om1,complex om2);
friend complex operator -(complex om1);
friend void operator ++(complex& om1,int);
complex operator-(complex om1);
void print(){
cout<<real;
if(imag>)
cout<<"+";
if(imag!=)
cout<<imag<<"i\n";
}
};
//取负
complex operator-(complex om1){
return complex(-om1.real,-om1.imag);
} //++
void operator++(complex& om1,int){
om1.real++;
om1.imag++;
} //重载+
complex operator+(complex om1,complex om2){
/*
complex temp;
temp.real = om1.real+om2.real;
temp.imag = om1.imag+om2.imag;
return temp;
*/
return complex(om1.real+om2.real,om1.imag+om2.imag);
} //重载*
complex operator*(complex om1,complex om2){
complex temp;
temp.real = om1.real*om2.real-om1.imag*om2.imag;
temp.imag = om1.real*om2.imag-om1.imag*om2.real;
return temp;
} //重载-。成员函数方式
complex complex::operator-(complex om1){
complex temp;
temp.real = real-om1.real;
temp.imag = imag-om1.imag;
return temp;
} int main(){
complex com1(1.1,2.2),com2(3.3,4.4),total,total2,total3,total1;
//total = com1+com2;
total= operator+(com1,com2);
total1 = com1-com2;
total2 = com1*com2;
total3 = -com1;
total.print();
total1.print();
total2.print();
total3.print();
total++;
total.print();
return ;
}
C++笔试专题一:运算符重载的更多相关文章
- C++ 运算符重载时,将运算符两边对象交换问题.
在C++进行运算符重载时, 一般来讲,运算符两边的对象的顺序是不能交换的. 比如下面的例子: #include <iostream> using namespace std; class ...
- C#高级编程笔记2016年10月12日 运算符重载
1.运算符重载:运算符重重载的关键是在对象上不能总是只调用方法或属性,有时还需要做一些其他工作,例如,对数值进行相加.相乘或逻辑操作等.例如,语句if(a==b).对于类,这个语句在默认状态下会比较引 ...
- C++运算符重载
C++运算符重载 基本知识 重载的运算符是具有特殊名字的函数,他们的名字由关键字operator和其后要定义的运算符号共同组成. 运算符可以重载为成员函数和非成员函数.当一个重载的运算符是成员函数时, ...
- 标准C++之运算符重载和虚表指针
1 -> *运算符重载 //autoptr.cpp #include<iostream> #include<string> using namespace std ...
- python运算符重载
python运算符重载就是在解释器使用对象内置操作前,拦截该操作,使用自己写的重载方法. 重载方法:__init__为构造函数,__sub__为减法表达式 class Number: def __in ...
- PoEduo - C++阶段班【Po学校】-Lesson03-5_运算符重载- 第7天
PoEduo - Lesson03-5_运算符重载- 第7天 复习前面的知识点 空类会自动生成哪些默认函数 6个默认函数 1 构造 2 析构 3 赋值 4 拷贝构造 5 oper ...
- 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换
[源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...
- 我的c++学习(8)运算符重载和友元
运算符的重载,实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该运算符时就调用此函数来行使运算符功能.这个函数叫做运算符重载函数(常为类的成员函数). 方法与解释 ◆ 1.定义运 ...
- c/c++面试题(6)运算符重载详解
1.操作符函数: 在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对 一个全局或成员函数的调用,该全局或成员函数被称为操作符函数.该全局或成员函数 被称为操作符函数.通过定义操 ...
随机推荐
- python部分
读取骨骼数据相关的多个json,拼接到一起 # -- coding: utf-8 -- import os path = "./test" #文件夹目录 files= os.lis ...
- doT.js的使用
引言 doT.js可以更好的在html端使用json数据. {{ }} for evaluation 模板标记符 {{= }} for interpolation 输出显示,默认变量名叫it {{! ...
- ANSI编码
ANSI编码 ANSI简介 不同的国家和地区制定了不同的标准,由此产生了 GB2312.GBK.Big5.Shift_JIS 等各自的编码标准.这些使用 1 至 4 个字节来代表一个字符的各种汉字延伸 ...
- [jzoj 6086] [GDOI2019模拟2019.3.26] 动态半平面交 解题报告 (set+线段树)
题目链接: https://jzoj.net/senior/#main/show/6086 题目: 题解: 一群数字的最小公倍数就是对它们质因数集合中的每个质因数的指数取$max$然后相乘 这样的子树 ...
- MyLayer MyScene
//MyLayer.h #include "cocos2d.h" USING_NS_CC; class MyLayer : public CCLayer { public: sta ...
- luogu 2679 子串
子串 史上最简短的一篇博客,毕竟看题解ac心疼我的kmp /* f[i][j][k][0/1]表示A的前i个,B的前j个,用到了k个子串,当前字符选或者不选. 所以f[0][0][0][0]的方案数为 ...
- Linux安装软件的几种方式
Linux下软件安装的方式主要有源码安装,rpm安装,yum安装,而常用的安装包主要有以下三种: tar包:例如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包 ...
- Spring深入浅出(三)XML方式以及注解的方式操作IOC
在日常的开发过程中,我们把程序分为3层:Controller层,Service层,DAO层.Controller类似于Servlet,也就是MVC中的控制层. 调用的顺序是: Controller层调 ...
- solarwinds之网络发现
1. 首先需要添加网络发现 2. 使用public 3. 添加主机 4. 网络地址选择 5. 默认下一步 6. 运行发现 7. 扫描结构如下 8. 下一步 ...
- const char *初值赋值以及文件读取
#include<iostream> #include<fstream> #include<string> #include<cstring> usin ...