一:下面重载乘法运算符的函数原型声明中正确的是:(网易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. updatefile.sh - Linux下代码更新脚本

    以下写的是一个关于文件上传的代码shell脚本 该篇文章主要有下面几个方面的考虑: 1.文章主要用于在Linux下代码包批量上传: 2.将被覆盖的代码备份做备份,用于兴许做问题查看或者代码的回退(回退 ...

  2. 访问Storm ui界面,出现Nimbus Summary或Supervisor Summary时有时无的问题解决(图文详解)

    不多说,直接上干货! 前期博客 apache-storm-0.9.6.tar.gz的集群搭建(3节点)(图文详解) apache-storm-1.0.2.tar.gz的集群搭建(3节点)(图文详解)( ...

  3. Kafka Consumer1

    本文的代码基于kafka的0.10.1的版本. 重新设计的原因 0.9以前的consumer是通过zookeeper来进行状态管理里的. 羊群效应 任何Broker或者Consumer的增减都会触发所 ...

  4. 对比学习用 Keras 搭建 CNN RNN 等常用神经网络

    Keras 是一个兼容 Theano 和 Tensorflow 的神经网络高级包, 用他来组件一个神经网络更加快速, 几条语句就搞定了. 而且广泛的兼容性能使 Keras 在 Windows 和 Ma ...

  5. Android 设置AlertDialog的大小 .

    AlertDialog dialog = builder.setTitle("消息列表") .setView(layout) .create(); dialog.show(); / ...

  6. (转载)项目实战工具类(一):PhoneUtil(手机信息相关)

    项目实战工具类(一):PhoneUtil(手机信息相关)   可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 ...

  7. 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)

    求解所有两点间的最短路问题叫做任意两点间的最短路问题. 可以用动态规划来解决, d[k][i][j] 表示只用前k个顶点和顶点i到顶点j的最短路径长度. 分两种情况讨论: 1.经过顶点k,  d[k] ...

  8. Docker学习笔记(1)----认识Docker

    1. 什么Docker? Docker是一个能把开发的应用程序自动部署到容器的引擎,它使用go语言编写的开源引擎,它在github上面个的地址为:https://github.com/docker/d ...

  9. FCC高级编程篇之Make a Person

    Make a Person Fill in the object constructor with the following methods below: getfirstname() getLas ...

  10. BZOJ 1444 [JSOI2009]有趣的游戏 (Trie图/AC自动机+矩阵求逆)

    题目大意:给你$N$个长度相等且互不相同的模式串,现在有一个字符串生成器会不断生成字符,其中每个字符出现的概率是$p_{i}/q_{i}$,当生成器生成的字符串包含了某个模式串,则拥有该模式串的玩家胜 ...