C++筆記(一)const與define,指針,引用,函數,類成員

 
 
 

1.》》constdefine。兩者都可以用來定義常量,但是const定義時,定義了常量的類型,所以更精確一些。#define只是簡單的文本替換,除了可以定義常量外,還可以用來定義一些簡單的函數,有點類似內置函數。constdefine定義的常量可以放在頭文件裏面。(小注:可 以多次聲明,但只能定義一次)

2.》》const與指針和引用。

(a)const與指針。

先來看看下面的幾種定義:

int  me

const int * p1=&me//可以通過me來修改其值,但是不能用*p1來修改,p1可以轉向

int * const p2=&me//此時允許*p2來修改其值,但是p2不能轉向。

const int *const  p3=&me;此時既不能用*p3來修改其值,也不能轉向

第一個此時const的意思是對p1來講它指向的就是const常量,雖然me不是,但是對p1來說就是。

b)指針和引用的的區別很簡單,就是引用更簡潔,更安 全。因爲引用聲明是必須初始化。 引用更接近const指針,一旦與某個變量關聯,就將一直效忠於他。 

cconst指針可以接受const和非const地址,但是非const指針只能接受非const地址。所以const指針的能力更強一些,所以儘量多用const指針,這是一種習慣。

3.》》(aconst與函數。由於 c,所以經常把函數的形參類型設爲const,而且多爲const 引用。但是這裏有一個限制,不能把不是左值 的地址傳遞給引用。(左值包括變量,數組元素,結構成員,引用,被解除引用的指針等)。 形參是const類型的,說明該函數將不會修改其值,該函數便爲const函數是。

bconst與類成員函數。先看看下面這段代碼:

const Stock land =Stock("hyd");

land.show();

land 是常量,但是類成員函數show無法保證不修改land,所以編譯器將拒絕執行該段代碼。除非你能保證showconst函數一樣,但這需要另外一種語法,即void show() const;(聲明)

void Stock::show() const{}(定義)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章