一:下面重载乘法运算符的函数原型声明中正确的是:(网易2016校招)

  A:MyClass operator *(double ,MyClass);
  B:MyClass operator *(MyClass ,MyClass);
  C:MyClass operator *(double ,double);
  D:MyClass operator *(MyClass ,double);
答案ABD:c++中规定,重载运算符必须和用户定义的自定义类型的对象一起使用。
 
二:如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是:(迅雷)
  A:一元运算符
  B:二元运算符
  C:A或者B都可以
  D:重载错误
答案D:友元函数无this指针。
三:若要对data类中重载的加法运算符成员函数进行声明,下列选项中正确的是?(百度)

  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++笔试专题一:运算符重载的更多相关文章

  1. C++ 运算符重载时,将运算符两边对象交换问题.

    在C++进行运算符重载时, 一般来讲,运算符两边的对象的顺序是不能交换的. 比如下面的例子: #include <iostream> using namespace std; class ...

  2. C#高级编程笔记2016年10月12日 运算符重载

    1.运算符重载:运算符重重载的关键是在对象上不能总是只调用方法或属性,有时还需要做一些其他工作,例如,对数值进行相加.相乘或逻辑操作等.例如,语句if(a==b).对于类,这个语句在默认状态下会比较引 ...

  3. C++运算符重载

    C++运算符重载 基本知识 重载的运算符是具有特殊名字的函数,他们的名字由关键字operator和其后要定义的运算符号共同组成. 运算符可以重载为成员函数和非成员函数.当一个重载的运算符是成员函数时, ...

  4. 标准C++之运算符重载和虚表指针

    1 -> *运算符重载 //autoptr.cpp     #include<iostream> #include<string> using namespace std ...

  5. python运算符重载

    python运算符重载就是在解释器使用对象内置操作前,拦截该操作,使用自己写的重载方法. 重载方法:__init__为构造函数,__sub__为减法表达式 class Number: def __in ...

  6. PoEduo - C++阶段班【Po学校】-Lesson03-5_运算符重载- 第7天

    PoEduo - Lesson03-5_运算符重载- 第7天 复习前面的知识点 空类会自动生成哪些默认函数 6个默认函数    1  构造  2  析构   3  赋值  4 拷贝构造  5 oper ...

  7. 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换

    [源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...

  8. 我的c++学习(8)运算符重载和友元

    运算符的重载,实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该运算符时就调用此函数来行使运算符功能.这个函数叫做运算符重载函数(常为类的成员函数). 方法与解释 ◆ 1.定义运 ...

  9. c/c++面试题(6)运算符重载详解

    1.操作符函数: 在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对 一个全局或成员函数的调用,该全局或成员函数被称为操作符函数.该全局或成员函数 被称为操作符函数.通过定义操 ...

随机推荐

  1. How to Hide Zip Files Inside a Picture Without any Extra Software in Windows

    http://www.howtogeek.com/119365/how-to-hide-zip-files-inside-a-picture-without-any-extra-software/ c ...

  2. doT.js实现混合布局,判断,数组,函数使用,取模,数组嵌套

    doT.js实现混合布局 数据结构 { "status": "1", "msg": "获取成功", "info ...

  3. WIN7使用VisualSVN建立SVN服务器

    使用SVN开发十分的方便,这样就不用每次都拷贝粘贴来备份了,网上看到一篇给自己的windows电脑安装SVN服务器的使用非常方便. 1.下载安装文件(服务器端和客户端) 服务器端采用VisualSVN ...

  4. Linux进程精讲

    进程相关概念 程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁....) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃的程序,占用系 ...

  5. 获取xml字符串中的属性值

    pagexml = @"<?xml version='1.0' encoding='utf-8'?> <DATAPACKET Version='2.0'> <M ...

  6. UVa 12545 Bits Equalizer【贪心】

    题意:给出两个等长的字符串,0可以变成1,?可以变成0和1,可以任意交换s中任意两个字符的位置,问从s变成t至少需要多少次操作 先可以画个草图 发现需要考虑的就是 1---0 0---1 ?---0 ...

  7. anaconda安装basemap

    https://blog.csdn.net/m0_37556124/article/details/80560384 basemap安装前需要先安装geos conda install geos 其次 ...

  8. (三)React基础

    3-1 使用React编写TodoList功能 import { Fragment} from ‘react’ Fragment是占位符 用于替代最外层div元素, 防止生成的元素会有两层div嵌套这 ...

  9. iOS开发——AFNetworking基于https的使用

    应公司项目需求,之前的项目使用的http,新项目要求使用https,这篇博客是在AFNetworking框架基于http的基础上修改而来. 1.在开始前,先要把 .crt 文件转成 .cer 文件,然 ...

  10. 紫书 例题8-11 UVa 10954 (优先队列)

    解法和合并果子是一样的, 每次取最小的两个, 更新答案, 加入队列 #include<cstdio> #include<queue> #define REP(i, a, b) ...