C const修飾函式 函式引數 函式返回值

2021-08-20 04:22:33 字數 1494 閱讀 9014

在類中將成員函式修飾為const表明在該函式體內,

不能修改物件的資料成員而且不能呼叫非const函式

。為什麼不能呼叫非const函式?因為非const函式可能修改資料成員,const成員函式是不能修改資料成員的,所以在const成員函式內只能呼叫const函式。

[cpp] 

view plain

copy

#include 

using

namespace

std;  

class

a  int

get() 

const

};  

防止傳入的引數代表的內容在函式體內被改變,但僅對指標和引用有意義。因為如果是按值傳遞,傳給引數的僅僅是實參的副本,即使在函式體內改變了形參,實參也不會得到影響。如:

[cpp] 

view plain

copy

void

fun(

const

inti)  

在函式體內是不能改變i的值的,但是沒有任何實際意義。

const修飾的函式引數是指標時,代表

在函式體內不能修改該指標所指的內容,起到保護作用

,在字串複製的函式中保證不修改源字串的情況下,實現字串的複製。

[cpp] 

view plain

copy

void

fun(

const

char

* src, 

char

* des)  

void

main()  

而且 const指標可以接收非const和const指標,而非const指標只能接收非const指標。

const修飾引用時:如果函式引數為使用者自定義的類物件如:

[cpp] 

view plain

copy

void

h(a a)  

傳遞進來的引數a是實參物件的副本,要呼叫建構函式來構造這個副本,而且函式結束後要呼叫析構函式來釋放這個副本,在空間和時間上都造成了浪費,所以函式引數為類物件的情況,推薦用引用。但按引用傳遞,造成了安全隱患,通過函式引數的引用可以修改實參的內部資料成員,所以用const來保護實參。

[cpp] 

view plain

copy

void

h(const

a & a)  

也是用const來修飾返回的指標或引用,保護指標指向的內容或引用的內容不被修改,也常用於運算子過載。歸根究底就是

使得函式呼叫表示式不能作為左值。

[cpp] 

view plain

copy

#include 

using

namespace

std;    

class

a   

int& get()  

};  

void

main()  

C const修飾函式 函式引數 函式返回值

在類中將成員函式修飾為const表明在該函式體內,不能修改物件的資料成員而且不能呼叫非const函式。為什麼不能呼叫非const函式?因為非const函式可能修改資料成員,const成員函式是不能修改資料成員的,所以在const成員函式內只能呼叫const函式。include using names...

C const修飾函式 函式引數 函式返回值

在類中將成員函式修飾為const表明在該函式體內,不能修改物件的資料成員而且不能呼叫非const函式。為什麼不能呼叫非const函式?因為非const函式可能修改資料成員,const成員函式是不能修改資料成員的,所以在const成員函式內只能呼叫const函式。include using names...

1 c const 修飾 建構函式

等號右邊都是物件的時候是拷貝,等號右邊是數字是值的時候是構造 1.乙個物件給另外乙個物件初始化時 1 maker m1 maker m2 m1 2 maker m3 m2 2.實參個形參賦值 void maker m 3.函式返回值 maker 1 debug下呼叫拷貝 其他情況下不會呼叫,只是把r...