C++以const 作為返回值類型的意義
const rational operator*(const rational& lhs, const rational& rhs);
很多程序員第一眼看到它會納悶:為什麽operator*的返回結果是一個const對象?因為如果不是這樣,用戶就可以做下面這樣的壞事:
rational a, b, c;
...
(a * b) = c; // 對a*b的結果賦值
我不知道為什麽有些程序員會想到對兩個數的運算結果直接賦值,但我卻知道:如果a,b和c是固定類型,這樣做顯然是不合法的。
一個好的用戶自定義類型的特征是,它會避免那種沒道理的與固定類型不兼容的行為。對我來說,對兩個數的運算結果賦值是非常沒道理的。
聲明operator*的返回值為const可以防止這種情況,所以這樣做才是正確的。
基本上一般的operator=運算符函數都會以const & 作為返回值,這樣是為了維護以上的理由。(達到同普通運算符的單向值的傳遞效果)
C++以const 作為返回值類型的意義
相關推薦
C++以const 作為返回值類型的意義
用戶 tor 程序員 nal 不兼容 對象 per 兩個 但我 const rational operator*(const rational& lhs, const rational& rhs); 很多程序員第一眼看到它會納悶:為什麽operator*的返
[轉]C#進階系列——WebApi 接口返回值不困惑:返回值類型詳解
try 接口測試工具 des rep home creat port 調用 學習 本文轉自:http://www.cnblogs.com/landeanfen/p/5501487.html 閱讀目錄 一、void無返回值 二、IHttpActionResult
pycahrm使用docstrings來指定變量類型、返回值類型、函數參數類型
col 函數 很快 裏的 大量 代碼補全 nic sss def py裏面不需要顯示聲明類型,這和java c這些靜態語言不同,雖然python這樣做少了一些代碼和寫代碼的困難度,但還是非常多的弊端的,運行速度 代碼安全, 這些都是語言本身帶來的本的弊端,這些沒辦法沒辦法彌
SpringMVC (八)SpringMVC返回值類型之返回Void
控制器 idea click www. bject ucc lang sca gpo SpringMVC的返回值類型有MedelAndView,String,void,Object數值型,集合類型等等 前兩種我們之前寫案例的時候一直在用,現在看一下返回值是void的 返回值
Mybatis-select-返回值類型錯誤理解
except 日誌 port typealias ted ndb util lis 註意 Mybatis :Cause: java.lang.UnsupportedOperationException異常: 今天在寫一個練手項目,作為初學Mybatis的小
Ajax詳解及使用Ajax時的返回值類型有哪些?
itl use text 數據 .ajax ack 部分 $.ajax llb Ajax詳解 Ajax = 異步 JavaScript 和 XML。 Ajax 是一種用於創建快速動態網頁的技術。 通過在後臺與服務器進行少量數據交換,A
CXF2.7整合spring發布webservice,返回值類型是Map和List<Map>類型
col oca 嚴重 jaxb worker 並且 數據 返回 anr 在昨天研究了發布CXF發布webservice之後想著將以前的項目發布webservice接口,可是怎麽也發布不起來,服務啟動失敗,原來是自己的接口有返回值類型是Map。 研究了一番之
C++ 把引用作為返回值
這裡所要解決的問題是哈夫曼演算法中最核心的Select函式,選取兩個權值最小的根節點。 void Select(int &min1,int &min2,int m); C++函式引數和返回值三種傳遞方式:值傳遞、指標傳遞和引用傳遞 (著重理解) 引用與指標的比較 引用是
C# in Depth學習筆記-值類型和引用類型
值引用 對數 com 簡單的 字符 url ima 來看 heap 2.3 值類型和引用類型 本節簡要討論了為了深入更高版本C#的世界,C# 1的哪些主題的基本元素是必須理解的。 先來看看在現實世界和在.NET中,值類型和引用類型的基本差異是如何自然體現的。 2.3.1
輸入一個正數x和一個正整數n,求下列算式的值。要求定義兩個調用函數:fact(n)計算n的階乘;mypow(x,n)計算x的n次冪(即xn),兩個函數的返回值類型是double
返回值 %d time data body 一個 pow color printf 題目描述 輸入一個正數x和一個正整數n,求下列算式的值。要求定義兩個調用函數:fact(n)計算n的階乘;mypow(x,n)計算x的n次冪(即xn),兩個函數的返回值類型是d
C語言函數返回值和變量類型
warn ron 字符串常量 迷宮 快速 ria 報錯 運行 關於 前言 最近在刷題,在寫矩陣的快速冪的題時,對於返回值是數組的程序,寫的十分冗雜。借此機會,重新梳理下C語言中函數的返回值與變量類型的關系。 按照變量的壽命,可以分為三種類型 1.靜態變量 壽命
【C/C++開發】類物件作為返回值時析構的情況說明
class Person { public: string name; public: Person() { name = "ttf"; } ~Person(){ cout << this->
C#基礎知識-引用類型和值類型的區別(六)
值類型 type 調用 執行 new 內存堆 ada ont 不同類 在第一篇中我們介紹了C#中基本的15種數據類型,這15種數據類型中又分為兩大類,一種是值類型,一種是引用類型。值類型有sbyte、short、long、int、byte、ushort、uint、u
C#中的struct(結構)為值類型,struct類型全接觸
line 輸出 其他 重要 影響 初始化 最大 cat type類 眾所周知,struct類型和class類型非常相似,尤其是在C++中,class可以辦到的事struct幾乎都可以實現。在C#中struc類型依然存在,它的用處相對來說已經顯得越來越不重要,這裏主要講述一下
C#中的值類型和引用類型以及堆棧
堆棧 ima tro nbsp 在線 hid class類 sed pen 引用類型如:string,Object,class等總是在從托管堆上分配的,C#中new操作符返回對象的內存地址--也就是指向對象數據的內存地址。 以下是值類型與引用類型的表: 我們來看下
淺談C#中的值類型和引用類型
title log 創建 編譯 設計 編寫 通過 發布 構造 在C#中,值類型和引用類型是相當重要的兩個概念,必須在設計類型的時候就決定類型實例的行為。如果在編寫代碼時不能理解引用類型和值類型的區別,那麽將會給代碼帶來不必要的異常。很多人就是因為沒有弄清楚這兩個概念從而在編
【.Net】淺談C#中的值類型和引用類型
rem 理解 amp div net 親情 實例 函數 大小 在C#中,值類型和引用類型是相當重要的兩個概念,必須在設計類型的時候就決定類型實例的行為。如果在編寫代碼時不能理解引用類型和值類型的區別,那麽將會給代碼帶來不必要的異常。很多人就是因為沒有弄清楚這兩個概念從而在編
C#值類型和引用類型
ons 獨立 賦值 之間 創建 1=1 簡單 中心 lin 值類型和引用類型通俗來講:就是存儲的地方不一樣, 值類型 int double bool char struct(結構) enum(枚舉) 存放在托管堆上邊, 引用類型:string object class
c#中的引用類型和值類型
有意義 tle 線程同步 pan trac 理解 也會 自己的 方法 一,c#中的值類型和引用類型 眾所周知在c#中有兩種基本類型,它們分別是值類型和引用類型;而每種類型都可以細分為如下類型: 什麽是值類型和引用類型 什麽是值類型: 進一步研究文
C# 可空值類型
static obj 引入 狀態 取出 struct opera 一個 boolean 我們知道,值類型的變量永遠不會為null,但在數據庫中的一個列可能允許值為空,但在CLR中沒有辦法將INT32值表示成null. 為了解決這個問題,CLR中引入了可