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.操作符函数: 在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对 一个全局或成员函数的调用,该全局或成员函数被称为操作符函数.该全局或成员函数 被称为操作符函数.通过定义操 ...
随机推荐
- Educational Codeforces Round 6 C. Pearls in a Row set
C. Pearls in a Row There are n pearls in a row. Let's enumerate them with integers from 1 to n from ...
- httpClient模拟登陆校内某系统
package com.huowolf; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpE ...
- Get Client IP
How to get a user's client IP address in ASP.NET? Often you will want to know the IP address of some ...
- Oracle GoldenGate
Oracle GoldenGate实现数据库同步 前言:最近刚好在弄数据库同步,网上查了些资料再加上自己整理了一些,做个分享! 一.GoldenGate的安装 官方文档: Oracle®GoldenG ...
- 在vmware下为oracle RAC 创建共享存储的总结
首先,介绍下用命令行vm-diskmanager形式创建磁盘文件的方法(其实,图形界面添加新磁盘就是调用此命令). 很多网上文章提及plainmaker.exe去创建共享磁盘,是以前的版本 ...
- 记一次使用 removeEventListener 移除事件监听失败的经历
测试一 测试代码如下 var Test = function() { this.element = document.body; this.handler = function() { console ...
- 简洁的MVC思想框架——Nancy(Session的使用)
前文提到关于Nancy中GET和POST以及外部引用图片,css和JS的文件等操作.今天所讲的是Nancy关于Session相关操作. Session作为web开发中极其重要的一部分,而Nancy中S ...
- 注解@SuppressWarnings
在JAVA中注解@SuppressWarnings("deprecation")的Deprecation是什么意思 过期的 @SuppressWarnings("depr ...
- CentOS7 部署SVN服务器
服务器端:svnserver 安装主要步骤 yum install subversion rpm -ql subversion mkdir /application/svndata mkdir /ap ...
- java后台生成图片二维码
controller: /** * 获取登录的验证码 * @param request * @param response */ public void getLoginCode(HttpSessio ...