以下是我上週學習c++ primer的心得:
c++允許將變數定義成陣列的引用,以下列**為例。形參為int (&arr)[10],該引數需分成兩部分說明,引用名和
引用定義。
引用名arr和&結合,表示其是乙個引用
和下標運算子結合,表示其是乙個陣列的引用
和int結合,表示其是乙個int型陣列的引用
值得注意的是,括號是必不可少的,否則形參就會變成乙個整型引用陣列
void print( int (&arr)[10] )
我們知道如何宣告並初始化乙個指向陣列的指標:
int a[10];
int (*p)[10];
p = a;
但是如何去宣告乙個返回陣列指標的函式呢,形式如下:
type ( *function(parameter_list) )[dimension]
type表示陣列元素的型別,dimension是返回陣列的維數
例項:int ( *func(int i) ) [10];
函式名和形參是func(int i)
和 * 結合表示函式返回乙個指標型別
和下標運算子結合表示其是指向陣列的指標
和int結合表示其返回乙個指向int型陣列的指標
定義乙個返回陣列指標的函式:
#include using std::cin;
using std::cout;
using std::endl;
int odd = ;
int even = ;
int (*arrptr( int i ))[5]
int main(void)
int func(void) const 類似這種將const放在形參列表之後的函式被稱為const成員函式。
在說明const成員函式之前,我們要先說說this指標。
每個成員函式都包含乙個隱式引數this,this指向該函式所對應的物件,預設的this指標的型別是乙個常量指標(頂層const)並且指向非常量物件。無論我們使用諸如this.func()或者obj.func()(obj是具體的物件名),編譯器都會將
obj的位址傳遞給func的隱式引數this。但是由於this是乙個指向非常量物件的指標,所以我們不能使用this去繫結乙個常量物件。類似的,常量物件也不能呼叫普通的成員函式。舉個栗子,
class fooclass ;
}int main(void)
在編譯a.foo()時,編譯器使用a的位址去初始化foo的隱式引數this,但是,這裡的this指向的是乙個非常量物件,所以無法繫結到物件a上去,因此 a.foo(); 是一條非法語句。只要將this轉換成const fooclass *const 型別就可以實現本次呼叫。通過將函式foo宣告為乙個const成員函式就可以實現這一點。修改**如下:
class fooclass ;
}int main(void)
值得注意的是,const成員函式不能修改物件內的成員變數。
c++ primer 5th edition
困擾我的isset empty函式
在學習php有一段時間之後,感覺自己的基礎知識還是有點不牢固,有的問題就不怎麼知道,比如就有乙個,在判斷乙個變數是否為空的情況下,我就不知道是用isset 還是empty 今天我就來分析該用哪個函式。isset 用於判斷乙個函式是否被設定過,如果設定過就為true,否則就為false,但是有乙個例外...
一直困擾我的問題
當解決乙個問題的時候,隨即引出幾個未知的問題。然後在解決那幾個問題時又引出更多的問題。導致問題就像一棵樹一樣,不斷往上生長。逐漸遠離最開始的問題。當然也在一層一層未解決的問題的影響下挫敗感越來越強烈。最後不得不停止 放棄。發現解決方法一 當在解決乙個不知道難度有多大的問題時,找一張紙,把最根本的要解...
對於C 學習的困擾
在使用c 寫web程式時,總是碰到乙個很鬱悶的事情,想要把乙個按鈕的click事件內的 重新修改一下,但是又想保留原來事件中的 把原來的 注釋後,又把 重新複製一遍,貼上在cs檔案中,就提示aspx中的空間沒有相應的事件,很鬱悶,對於除錯簡直就是快瘋了。每次都需要從aspx中雙擊按鈕,然後自動進入c...