變數?常量?分不清?通俗易懂幫你分清

2021-09-27 08:47:17 字數 986 閱讀 6926

一、常量(用const修飾的乙個變數,使其變為乙個不可修改的值)

const int a=4;

cout<<「a=」《四、常物件、常成員函式、常物件指標、常引用

常物件就是在例項化乙個物件的時候在物件的開頭用const修飾,常物件內部的任何值都不可以被改變;

常成員函式就是在成員函式的末尾+空格+const(意味著在成員函式中的隱藏的*this指標被const修飾)常成員函式中不能改變任何變數的值。

常物件指標就是乙個常指標指向了乙個物件,不能通過該指標改變該物件中的任何值(其實就是在之前介紹的int型別的廣義化)

常引用就是給乙個物件起別名,但是不能通過這個引用名改變物件的值

注意:對於他們之間的呼叫關係:常物件只能呼叫常成員函式;非常物件既可以呼叫常成員函式,又可以呼叫非成員函式。 首先解釋前者 對於常物件因為這個物件內所有成員的值都不允許改變,因此如果呼叫非const成員函式,這個函式本身可以改變成員值,因此此時呼叫非常危險,一旦成員函式做出改變成員的值,這就違背了const物件的初衷,因此c++禁止呼叫。就像你告訴兒子咱們家的錢你只能掙不能花,但是如果這個時候你呼叫乙個又花又掙的兒子,他掙錢還好,但是他一旦花錢就會報錯。 但是呼叫const成員函式那不就正好,都是不允許改變的。相當於你只呼叫了乙個只會掙錢的兒子,不存在他花錢的情況,雙重保險。 接著我解釋後者,對於普通物件因為這個物件的值可以被改變,如果呼叫普通的成員函式那就沒問題,即可讀也可寫,如果呼叫常成員函式,物件本身是擁有讀寫許可權的,是函式只做讀操作,這是沒問題的,就想你告訴你兒子咱們家的錢你既可以花也可以掙,但是你兒子只掙不花,這是沒毛病的。

常物件指標(預設是修飾*p)參考常物件。

常引用也是乙個道理

另一種情況(classtype * const p)這種情況允許改變指向物件的值,但是不能重新指向;

class coordinate

int getx()

int gety()

void printf() const

Equals和 還分不清?

對於基本型別和引用型別 的作用效果是不同的,兩者比較如下 我們可以來看乙個簡單的例項 public static void main string args system.out.println x y 對於引用物件的x和y,指向的是同乙個字串,兩個引用是相同的,因此輸出true。system.ou...

MVP, MVC, MVVM, 傻傻分不清楚

最近 mvc model view controller 和 mvvm model view viewmodel 在微軟圈成為顯學,asp.net mvc 和 wpf 的 prism mvvm framework 功不可沒,mvc 和 mvvm 在概念上都是基於分層的,將呈現 presentatio...

這幾個的用法傻傻分不清

每每看到這幾個,就矇圈了,這都是啥呀?既然這麼容易混淆,我還是來做個小筆記吧,以便日後查閱 1.slice 陣列 用法 array.slice start,end 解釋 該方法是對陣列進行部分擷取,並返回乙個陣列副本 引數start是擷取的開始陣列索引,end引數等於你要取的最後乙個字元的位置值加上...