使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. 风暴数码论坛教程--apk和odex的介绍和合并
  2. Java 5种字符串拼接方式性能比较。
  3. idea实现抽象类的所有抽象方法_深入理解Java的接口和抽象类
  4. linux内核高分辨率定时器,64位Linux上的高分辨率定时器支持
  5. 实验二+140+阮晨曦
  6. python操作redis实例_Java,php,Python连接并操作redis实例
  7. 聚类算法——Birch详解
  8. python操作hive数据库代码_python导出hive数据表的schema实例代码
  9. 无外网环境下CentOS 7安装MySQL 5.7.18
  10. 爬虫套路知多少?反爬策略是关键
  11. 未来的几年,不可能再有岁月静好
  12. memcpy的两种实现(转)
  13. 高可用分布式非关系型数据库-Cassandra
  14. Windows磁盘格式、分区格式及类型
  15. 许晓斌_Maven实战(一)——坐标规划
  16. Java后端集成发送短信功能(用的是阿里云的短信服务)
  17. easyexcel 字体加粗
  18. 2021-2025年中国灌溉计时器行业市场供需与战略研究报告
  19. java 克隆对象 list_我想动态创建对象,先在List创建空对象,然后使用createEquipment复制,返回List,但是不会写了...
  20. OpenStack Days China:华云数据CTO郑军分享OpenStack创新实践

热门文章

  1. linux怎么点亮硬盘灯_一种基于Linux系统下测试Expander背板硬盘指示灯的方法及系统与流程...
  2. python编写环境手机_给android手机上配置python运行环境
  3. c++ 跳转到上级目录_基于VSCode和CMake进行C/C++开发第五讲IDEVSCode
  4. mybatis字符串转成数字_JavaScript 字符串中的 pad 方法!
  5. 归并排序递归实现迭代实现
  6. 转 oracle 监控执行计划突然变化
  7. [saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
  8. C++ 对象的内存布局【转】
  9. 渴望成为架构师的你,或许需要与这些大咖来一场面基
  10. java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别