• C++笔试专题一:运算符重载


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

      
     1 /*c++运算符重载****************/
     2 /********************
     3 5类运算符不能重载:关系运算符.,成员指针运算符*,作用于分辨符*,sizeof运算符,三目运算符:?
     4 不能改变运算符的操作数个数
     5 不能改变原有运算符的优先级
     6 不能改变运算符原有的结合特性
     7 不能改变运算符对与定义类型数据的操作方式。
     8 ********************
     9 运算符重载有两种方式:
    10 1:友元函数
    11     friend 类型 operator@(参数表);类外不需要加friend
    12     不能重载的四个:= () [] ->
    13 2:成员函数
    14     类型 operator@(参数表)
    15     参数默认传入了一个this
    16 *********************/
    17 
    18 
    19 #include <iostream>
    20 using namespace std;
    21 
    22 class complex{
    23 private:
    24     double real,imag;
    25 public:
    26     complex(double r = 0,double i = 0){
    27         real = r;
    28         imag = i;
    29     }
    30     friend complex operator+(complex om1,complex om2);
    31     friend complex operator*(complex om1,complex om2);
    32     friend complex operator -(complex om1);
    33     friend void operator ++(complex& om1,int);
    34     complex operator-(complex om1);
    35     void print(){
    36         cout<<real;
    37         if(imag>0)
    38             cout<<"+";
    39         if(imag!=0)
    40             cout<<imag<<"i
    ";
    41     }
    42 };
    43 //取负
    44 complex operator-(complex om1){
    45     return complex(-om1.real,-om1.imag);
    46 }
    47 
    48 //++
    49 void operator++(complex& om1,int){
    50     om1.real++;
    51     om1.imag++;
    52 }
    53 
    54 //重载+
    55 complex operator+(complex om1,complex om2){
    56     /*
    57     complex temp;
    58     temp.real = om1.real+om2.real;
    59     temp.imag = om1.imag+om2.imag;
    60     return temp;
    61     */
    62     return complex(om1.real+om2.real,om1.imag+om2.imag);
    63 }
    64 
    65 //重载*
    66 complex operator*(complex om1,complex om2){
    67     complex temp;
    68     temp.real = om1.real*om2.real-om1.imag*om2.imag;
    69     temp.imag = om1.real*om2.imag-om1.imag*om2.real;
    70     return temp;
    71 }
    72 
    73 //重载-。成员函数方式
    74 complex complex::operator-(complex om1){
    75     complex temp;
    76     temp.real = real-om1.real;
    77     temp.imag = imag-om1.imag;
    78     return temp;
    79 }
    80 
    81 int main(){
    82     complex com1(1.1,2.2),com2(3.3,4.4),total,total2,total3,total1;
    83     //total = com1+com2;
    84     total= operator+(com1,com2);
    85     total1 = com1-com2;
    86     total2 = com1*com2;
    87     total3 = -com1;
    88     total.print();
    89     total1.print();
    90     total2.print();
    91     total3.print();
    92     total++;
    93     total.print();
    94     return 0;
    95 }
  • 相关阅读:
    BT656跟BT1120和BT709有什么区别 分类: 生活百科 HI3531 2013-11-26 09:03 1320人阅读 评论(0) 收藏
    plx9030触发pci中断 分类: 浅谈PCI 2013-11-15 17:52 634人阅读 评论(2) 收藏
    如何把任意文件隐藏在一张图片里? 分类: DirectX 2013-11-15 16:05 524人阅读 评论(0) 收藏
    如何使用系统设备枚举器 分类: DirectX 2013-11-15 16:03 707人阅读 评论(0) 收藏
    利用 DirectShow 开发自己的 Filter 分类: DirectX 2013-11-15 16:01 686人阅读 评论(0) 收藏
    做好口碑营销需要抓住的四条法则
    情绪管理的误区
    20年,一张卡和一个时代
    消费税悄然扩围 行业协会忙协商
    一个投顾团队的股灾记忆
  • 原文地址:https://www.cnblogs.com/LaplaceAkuir/p/6386231.html
Copyright © 2020-2023  润新知