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.操作符函数: 在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对 一个全局或成员函数的调用,该全局或成员函数被称为操作符函数.该全局或成员函数 被称为操作符函数.通过定义操 ...
随机推荐
- pandaboard安装ubuntu
参照:https://wiki.ubuntu.com/ARM/OmapDesktopInstall 主要是在linux下安装,主要命令为: zcat ./ubuntu-12.04-preinstall ...
- 剪切具有CornerRadius的RectangleGeometry(可能在Ripple中用到)
剪切具有CornerRadius的RectangleGeometry(可能在Ripple中用到) 1.新建Converter public class BorderClipConverter : IM ...
- HDU5638 / BestCoder Round #74 (div.1) 1003 Toposort 线段树+拓扑排序
Toposort 问题描述 给出nn个点mm条边的有向无环图. 要求删掉恰好kk条边使得字典序最小的拓扑序列尽可能小. 输入描述 输入包含多组数据. 第一行有一个整数TT, 表示测试数据组数. 对 ...
- node09---中间件
如果我的的get.post回调函数中,没有next参数,那么就匹配上第一个路由,就不会往下匹配了. 如果想往下匹配的话,那么需要写next() 1app.get("/",funct ...
- 用自定义的函数将gps转换为高德坐标
<?php echo<<<_END <!doctype html> <html> <head> <meta charset=" ...
- MongoDB数据操作之删除与游标处理
删除数据(比较常用) 范例:清空infos集合中的内容.表.文档.成员. db.infos.remove({"url":/-/}); 默认情况下都删除,第二个条件设为true,只删 ...
- xBIM 实战02 在浏览器中加载IFC模型文件并设置特效
系列目录 [已更新最新开发文章,点击查看详细] 在模型浏览器中加载模型后,可以对模型做一些特殊操作.下图是常用的设置. 都是通过 xbim-viewer.js 中的 API 来设置以达到一定的 ...
- 计算sigma
1.计算平均值Avg Avg = (a0 + a1 + ......+ an-1) / n 2.计算sigma sigma = sqrt( ( (a0-avg) ^2 + (a1-avg) ^2 ...
- java中return在Try-Catch中的执行顺序
我们知道return会结束此方法并返回指定值.以及在Try-catch-finally中无论try代码块中有没有异常finally中的代码时都会被执行的.但是如果return包含在try-catch- ...
- SharePoint 网站中定义的页面背景图片不起作用
If you are working on custom SharePoint 2013 master pages, designs and/or CSS, these little CSS clas ...