zoukankan      html  css  js  c++  java
  • c/c++ 重载运算符的思考

    c/c++ 重载运算符的思考

    #include <iostream>
    using namespace std;
    
    class Imaginary{
    
    public:
      Imaginary():real(0), imag(0){
        cout << "c:" << this << endl;
      }
      Imaginary(int real, int imag):real(real), imag(imag){
        cout << "c:" << this << endl;
      }
      Imaginary operator+ (const Imaginary &m){
        return Imaginary (real + m.real, imag + m.imag);
      }
      ~Imaginary(){
        cout << this << endl;
      }
    private:
      int real;
      int imag;
    };
    
    int main(){
      Imaginary m1(10, 20);
      Imaginary m2(1, 2);
      Imaginary m3;
      printf("m3 : %p
    ",&m3);
      m3 = m1 + m2;
      cout << 1 << endl;
    
      return 0;
    }
    
    

    执行结果:

    分析:执行m3 = m1 + m2的时点,因为m3的空间已经创建过了,所以立即释放了operator+中创建的对象,打印了1出来,最后才释放了其余3个对象。

    如果代码改成:Imaginary m3 = m1 + m2; 因为m3还没有被创建过,所以不释放operator+中创建的对象。

  • 相关阅读:
    Hive的架构和工作流程
    Hive的定义及搭建
    HBase API操作
    HBase相关概念简介
    HBase shell常用命令
    HBase的简介和搭建
    scrapy useragent
    scrapy settings
    scrapy中的request对象
    python语法
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/9500880.html
Copyright © 2011-2022 走看看