对于C++中const & T operator= 的一点思考
一个正常的assignment操作符的声明是这样的。
const elmentType & elmentType::operator=(const elmentType &rhs)
这两个const应该作何理解呢?后面的const很好理解,作为引用对象,要防止对原有对象进行破坏。
那么后面一个呢?
事实上,对于一个assignment操作来说,
比如
a = b;
来说,a所取得的并不是调用operator=的返回值,而是通过成员函数调用operator=直接对a操作实现的。
那么这个返回值的意义是什么?
事实上这个返回值是为下面这种情况准备的。
a = b = c = d;
在这种情况下,赋值操作符向右结合,实际的操作是
a = (b = (c = d))
operator=的返回值是为了在连续赋值时充当左值使用,这样的话,自然要防止自己的值被更改,因为需要声明const加以保护。
以上是个人理解,如果有问题,欢迎指正。
对于C++中const & T operator= 的一点思考的更多相关文章
- Ext4中内存使用技巧的一点思考
今天在分析Ext4文件系统的时候,看到两个函数ext4_kvzalloc()/ext4_kvfree(),想到以前在使用kzalloc()/kmalloc()带来的内存分配失败问题,不得 ...
- (转) C/C++中const关键字详解
文章转自 http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html 为什么使用const?采用符号常量写出的代码更容易维 ...
- c++中const使用详解
const在c++中是一个关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些 ...
- C/C++ 中 const 修饰符用法总结
C/C++ 中 const 修饰符用法总结 在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家 ...
- C++中const用法详解
本文主要内容来自CSDN论坛: http://bbs.csdn.net/topics/310007610 我做了下面几点补充. 补充: 1. 用const声明全局变量时, 该变量仅在本文件内可见, 类 ...
- C++中const的实现细节介绍(C,C#同理)
via:http://www.jb51.net/article/45755.htm 本篇文章主要是对C++中const的实现细节进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1.什么 ...
- 结合示例说明C++中const和指针结合时怎么理解
在之前随笔<C++中const使用要点(一)>中简单叙述了const int*.int* const和const int* const的区别,记住三句话就能在实际运用时用对,但是看书时发现 ...
- php中const与static的区别与使用(转)
首先关于const 在php的类内部只可以修饰成员属性,不可以修饰方法,如下: class Test{ const PATH = 'c/';//修饰常量 const function te ...
- C、C++中const的区别
C语言中: 被const修饰的变量,仍然是变量.虽然不能用C语法给这个变量改变值,但他本质上还是变量. C编译器会给它分配空间. C中,const默认使用的是外部链接. C++中: 被const修饰的 ...
随机推荐
- Powershell变量的类型和强类型
Powershell变量的类型和强类型12 12月, 2011 在 Powershell tagged Powershell教程 / 变量 / 存储 / 数据 / 类型 by Mooser Lee ...
- qsort的另类玩法,无聊写着耍耍
#include <stdio.h>#include <stdlib.h>char cmp_shellcode[] = "\x55" "\x89\ ...
- uva 10401 Injured Queen Problem(dp)
题目链接:10401 - Injured Queen Problem 题目大意:给出一个字符串,要求在n * n(n为字符串的长度)的棋盘上摆放n个受伤的皇后,受伤的皇后只能攻击到同一列和它周围8个格 ...
- 匹配“is outside location”
<pre name="code" class="html">is outside location 怎么匹配? . 匹配除换行外的所有单个字符,通常 ...
- 试用mysql的infobright引擎
海量数据分析处理,向来比较头疼费劲,特别是项目资金不允许的情况下,都是优先考虑开源软件,2007使用mysql,2009年尝试greenplum(公司最终选用oracle),20 ...
- 【转】Linux中history历史命令使用方法详解
原文网址:http://os.51cto.com/art/201205/335040.htm 当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效 ...
- 【转】 树莓派学习笔记——I2C设备载入和速率设置
原文网址:http://blog.csdn.net/xukai871105/article/details/18234075 1.载入设备 方法1——临时载入设备 sudo modprobe -r i ...
- log4net logfornet 配置和用法
较好的参考地址: http://in3040.blog.163.com/blog/static/116702443201091354028744/ http://dev.tot.name/dotnet ...
- Activity的onSaveInstanceState()和onRestoreInstanceState()方法
首先Android的Activity生命周期如下图: Activity的onSaveInstanceState()和onRestoreInstanceState()并不是生命周期方法,他们不同于onC ...
- 后台数据导出为Excel
数据导出的方法如下: 一.下载office的类库:microsoft.office.interop.excel.zip 根据电脑安装的office版本选择引入相应的类库,office2007选择12. ...