一:下面重载乘法运算符的函数原型声明中正确的是:(网易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 ;
}

最新文章

  1. Asp.net Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则 (多级路由) 如:Admin/Test/Index
  2. SQL Server 跨数据库查询
  3. 芯航线FPGA学习套件之4*4矩阵键盘模块测试手册
  4. ajax上传图片到服务器
  5. javascript设计模式与开发实践阅读笔记(9)——命令模式
  6. ubuntu Linux 测试PHP却提示下载文件的解决办法
  7. php CI框架nginx 配置
  8. SpringMVC学习总结(七)——SpringMVC注解@..详解
  9. Modem常用概念
  10. ASP.NET MVC轻教程 Step By Step 2 ——View初探
  11. Hibernate学习之Hibernate流程
  12. CSS3阴影 box-shadow的使用和技巧总结[转]
  13. Linux常用解压文件
  14. 算法——蛮力法之选择排序和冒泡排序c++实现
  15. C#中的两把双刃剑:抽象类和接口
  16. chrono--高精度计时
  17. Linux实战案例(7)安装jdk
  18. Codeforces round 1086
  19. Django 中bootstrap的引用
  20. MyEclipse启动Tomcat缓慢的原因及解决办法

热门文章

  1. Oracle RAC 实施
  2. [JZOJ 5875] [NOIP2018提高组模拟9.20] 听我说,海蜗牛 解题报告(BFS+二分)
  3. Array数组的排序与二分查字法
  4. 51nod 1572 宝岛地图 (预处理四个方向的最大步数优化时间,时间复杂度O(n*m+k))
  5. crontab中使用sudo命令的注意
  6. POJ 2155 Matrix【 二维树状数组 】
  7. 接口测试工具篇--jmeter
  8. the prblem 3n+1
  9. tinymce原装插件源码分析(三)-code
  10. BZOJ 2865 字符串识别(后缀数组+线段树)