使operator+成员函数返回const临时对象,则 "obj1 + obj2 = obj3" 不能通过编译,从而避免这种错误。

#include<iostream>
template<typename T>
class MyTest{T m_data;
public:MyTest() : m_data(){}MyTest(const T &dat) : m_data(dat){}MyTest(const MyTest &tes) : m_data(tes.m_data){}const MyTest operator+(const MyTest &tes) const{return MyTest(m_data + tes.m_data);}//MyTest operator+(const MyTest &tes) const{//    return MyTest(m_data + tes.m_data);//}
};
int main(){MyTest<int> obj1(5), obj2(9), obj3;obj1+ obj2 = obj3;return 0;
}

编译时"obj1 + obj2 = obj3"时发生错误:

ConstRet.cpp: In function ‘int main()’:
ConstRet.cpp:20:16: error: passing ‘const MyTest<int>’ as ‘this’ argument of ‘MyTest<int>& MyTest<int>::operator=(const MyTest<int>&)’ discards qualifiers [-fpermissive]
     obj1+ obj2 = obj3;
                ^

转载于:https://blog.51cto.com/frankniefaquan/1934183

如何避免 obj1 + obj2 = obj3 错误?相关推荐

  1. jQuery 2.0.3 源码分析core - 整体架构

    拜读一个开源框架,最想学到的就是设计的思想和实现的技巧. 废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery ...

  2. Python编程规范及性能优化

    为什么80%的码农都做不了架构师?>>>    Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器 ...

  3. python学习-Django (3)

    ORM----多对多查询 创建表(建立模型) 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详 ...

  4. 如何动态合并两个JavaScript对象的属性?

    我需要能够在运行时合并两个(非常简单的)JavaScript对象. 例如,我想: var obj1 = { food: 'pizza', car: 'ford' } var obj2 = { anim ...

  5. Web前端-JavaScript基础教程上

    Web前端-JavaScript基础教程 将放入菜单栏中,便于阅读! JavaScript是web前端开发的编程语言,大多数网站都使用到了JavaScript,所以我们要进行学习,JavaScript ...

  6. keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...

    这是密歇根大学课程Python For Everybody总结的P2部分.课程总结P1部分的地址如下: P1: 零基础程序设计(Python 入门) carolinezhq:[Python]数据分析前 ...

  7. js调试console.log使用总结图解

    一 实例 打印字符串和对象: 可展开对象查看内部情况: 看一下console对象本身的定义情况: 输出对象情况: utag对象所在文件: 输出对象: 二 Console.log 总结 1 如果你js没 ...

  8. 简明 Python 编程规范v2

    赖勇浩(http://laiyonghao.com) 注:之前发布一篇<简明 Python 编程规范>(见:http://blog.csdn.net/lanphaday/article/d ...

  9. JavaScript专题之从零实现jQuery的extend

    JavaScritp 专题系列第七篇,讲解如何从零实现一个 jQuery 的 extend 函数 前言 jQuery 的 extend 是 jQuery 中应用非常多的一个函数,今天我们一边看 jQu ...

  10. ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

    必备   在讲解各编译器之前,必须先了解一下以下这些文件.这些文件在编译器目录下或者编译生成目标平台的可执行程序时经常见到.此外,还需要注意区分 Windows 平台 和 Linux 平台的文件. . ...

最新文章

  1. 2016年5月29日周总结
  2. java中u怎么用_Java中interrupt的使用
  3. 计算机网络项目化实训教程,计算机网络项目实训教程
  4. 俞敏洪吹的牛破了?首场直播带货后 新东方股价大跌
  5. 双重检查锁定及单例模式
  6. 线程池框架-Executor
  7. leetcode python3 简单题190. Reverse Bits
  8. amesim子模型_Amesim液压管道子模型(一):子模型的区别
  9. Python3.5(十三)迭代器生成器
  10. 将 iOS 软件移植到 Windows 10 的桥梁将很快打通
  11. dynamips常用命令
  12. 如何下载所有Instagram照片
  13. iOS 的 APP 如何适应 iPhone 5s/6.6s/6.6sPlus 三种屏幕的尺寸?
  14. 双极结型三极管的结构、特性曲线、参数、lceda仿真
  15. wav转mp3 c语言源码,C/C++知识点之mp3格式转wav格式 附完整C++算法实现代码
  16. 数据中心优化专家Future Facilities公司推出6Sigma DCX最新版本
  17. Centos8 yum配置阿里云镜像
  18. 局部差异二进制 LDB - Local Difference Binary
  19. OO第四单元作业小结
  20. compare()和compareTo()区别

热门文章

  1. 转载--卷积神经网络卷积层池化层输出计算公式
  2. arraylist线程安全吗_面试官:用过ThreadLocal吗?它保证线程安全的原理是啥?
  3. 查看mysql 二进制日志_Mysql主从复制原理及搭建
  4. ArcGIS API for JavaScript 打印
  5. ionic创建应用的三个模版
  6. 获得数据库连接池中数据连接资源的两种方式
  7. [转]【基于zxing的编解码实战】精简Barcode Scanner篇
  8. 我的Android 4 学习系列之使用 Internet 资源
  9. Gxemul 运行原理简述
  10. 域还原的三种模式,以及应用场景