美文网首页
构造函数和运算符重载的理解

构造函数和运算符重载的理解

作者: 努力护肤的程序媛 | 来源:发表于2018-10-14 21:04 被阅读17次
'''
 #include <iostream>

using namespace std;

class Complex{
int real;
int image;
public:
Complex(){
    cout<<"default constructor is called"<<endl;
}
Complex(int r, int i=0){
    real = r;
    image = i;
    cout<<"constructor is called"<<endl;
}

~Complex(){
    cout<<"deconstructor is called"<<endl;
}

friend Complex operator+(const Complex &a, const Complex &b){
    return Complex(a.real + b.real, a.image + b.image);
}

friend ostream &operator<<(ostream &o, const Complex &a){
    o<<a.real<<"+"<<a.image<<"i";
}
 };
int main() {

Complex a(5,6);
cout<<a+7<<endl;
cout<<"---------------------------------------"<<endl;
cout<<8+a<<endl;
return 0;
  }
'''

以上述代码为例子,当需要对运算符“+”进行重载的时候,如果将重载函数写成类的成员函数,将只能实现a+7,而不能实现8+a。或者说,可以写两个全局重载函数:

'''
Complex(int n,  const Complex &a){
  return Complex(a.real + n, a.imag);
}
 Complex(const Complex &a, int n){
  return Complex(a.real + n, a.imag);
}
''' 

但是这两个函数可以简化写成一个函数:

  '''
  Complex operator+(const Complex &a, const Complex &b){
      return Complex(a.real + b.real, a.image + b.image);
  }
  '''

这样a+8 或者 7+a在运行的时候,首先会调用构造函数将8或7表示成一个临时的Complex对象,然后再调用运算符重载函数。

相关文章

  • c++第三讲 类和对象

    目标: 类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值操作符重载 默认拷贝函数与赋值运算符重载 cons...

  • 1.2.18_C++ 赋值运算符重载

    C++ 重载运算符和重载函数 就像其他运算符一样,您可以重载赋值运算符( = ),用于创建一个对象,比如拷贝构造函...

  • 全面梳理 C++ 拷贝构造与赋值运算符重载(operator=)

    本文全面梳理 C++ 的拷贝构造与赋值运算符重载(operator=) 默认拷贝构造函数和赋值运算符 在默认情况下...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • 9.18学习总结

    今天学了继承和派生。 派生类:继承了基类的除了构造函数、析构函数、拷贝构造函数和赋值运算符重载函数之外的所有成员,...

  • 构造函数和运算符重载的理解

    以上述代码为例子,当需要对运算符“+”进行重载的时候,如果将重载函数写成类的成员函数,将只能实现a+7,而不能实现...

  • 学习笔记第一周(Boolan或博览网)

    一、构造函数1、与类同名2、可以在构造函数中给成员成员变量直接赋值 二、运算符重载 重载成员函数,隐藏一个参数,该...

  • 9月18日四期C++总结

    今天上午老师给我们讲解了继承和派生 派生类继承了基类的除了构造函数、析构函数、拷贝构造函数和赋值运算符重载函数之外...

  • C++笔记:拷贝构造函数和赋值运算符重载

    拷贝构造函数和赋值运算符重载 拷贝构造函数 对于普通类型的对象来说,它们之间的复制是很简单的,例如: 而对于类对象...

  • C++面向对象-运算符重载

    运算符重载 运算符重载又称为操作符重载,可以为运算符增加一些新的功能,全局函数和成员函数都支持运算符重载,我们通过...

网友评论

      本文标题:构造函数和运算符重载的理解

      本文链接:https://www.haomeiwen.com/subject/lomtzftx.html