zoukankan      html  css  js  c++  java
  • c++中重载运算符的小细节

    直接开始扯

    首先我们先定义一个类

    class TEST{
        public:
        int v;
        TEST();
        TEST operator+(const TEST& B);
    }
    

      其中的重载运算符+-如下

    TEST TEST::operator+(const TEST& B){
        TEST a;
        a.v=this->v + B.v;
        return a;
    }
    

      乍一看是不是非常简单呢

    下面来一次测试

    int main() {
    	TEST a;
    	std::cout << &a;
    	a.v = 1;
    	TEST b;
    	std::cout << &b;
    	b.v = 2;
    	TEST c;
    	std::cout << &c;
    	c.v = 3;
    	a = b + c;
    	std::cout << &a;
    }
    

      输出如下

    00ADF7F8
    00ADF7EC
    00ADF7E0
    00ADF7F8
    

      我们可以发现 当进行a=b+c的运算时,理论上重载运算符+应该要新生成一个对象,再将新对象赋给a,所以运算前后2次a的内存地址应该是不同的

      但实际上a的内存地址并没有被更改

      实际上重载运算中会将返回的对象拷贝到a中,然后删除返回对象,因此看起来就像是a没有被动过的样子

      虽然会带来性能上的损失,但不会带来内存上的损失

  • 相关阅读:
    php数组
    php运算符
    PHP数据类型
    面向对象3和继承
    面向对象2
    面向对象1
    语法整理php
    语法整理
    ajax
    数据库4
  • 原文地址:https://www.cnblogs.com/prprpr/p/13554740.html
Copyright © 2011-2022 走看看