1、類的構造:假定myclass是乙個自定義類,則當執行 myclass a[3],*p[2]; 實際上執行建構函式的次數只有3次,也就是物件指標陣列不會引起執行建構函式。
2、常資料成員:對於常資料成員,可以在宣告時一併初始化(c++11),也可以在建構函式內初始化。但是,不能不初始化。在宣告時初始化之後則無法再次修改其值,不管是在建構函式內還是普通成員函式內。若在類內宣告,並未初始化其值,則只能在建構函式的初始化列表裡面初始化其值,不能在建構函式體內初始化,也無法在普通成員函式內初始化。
#include
class myclass
private:
const
int a;
};int main(void)
3、常成員函式與常資料成員:類的常成員函式可以操作常資料成員,但是不能修改。普通成員函式可以操作常資料成員,但不能修改,總之,就是常資料成員無法在函式中修改值,也就是唯讀read-only。
class myclass;//建構函式
void setvalue(int i)//設定value值
private:
intvalue;
};int main(void)
4、資料成員為指標的情況:
class myclass
myclass(int i)
private:
int* value;
};
若要對value賦值,則可以利用建構函式myclass(int i),在使用時:
myclass
my(10);
5、拷貝初始化建構函式:若沒有自定義,則c++會自動建立拷貝初始化建構函式。
class myclass
myclass(int i)
private:
int* value;
};int main(void)
6、const int* x 和 int* const x 的區別:
int main(void)
要清楚認識到這個const修飾的是int* x,也就是說這個指標指向的物件的值是不能被修改的。那麼可以更改這個指標的指向麼?
答案是可以,參見如下**。因為const只作用於*x,即x所指向的那個物件。
int main(void)
int main(void)
總結說:就是看const修飾的是什麼!對於const 型別名* 指標名;這樣的表示式是同樣的道理。
(1)若修飾的是int *x則表明不是修飾的指標本身,而是修飾的指標指向的物件,結果是指標可以改變指向,但指標指向的物件的值無法被改變。
(2)若修飾的是x,則表明指標的指向不能被改變(是read-only的),但指標指向的物件的值能否被改變還要看指向的物件自身是不是const的,如果是,則不能被修改,如果不是,則可以被修改。
7、對於new運算子建立物件和物件陣列問題:
#include
class myclass
};int main(void)
8、關於c++中的巨集替換:(這是很大一塊兒內容需要補充學習的)
定義的巨集函式是如何替換的?(c語言的遺留問題。)
看到有這樣的巨集替換寫法,和模板類似,但是目前編譯不通過,估計是已經被廢棄了吧?
#include
#define my_class(classname,classdatatype)
class classname
private:
classdatatype value;
};my_class(myclass,int);
my_class(otherclass,double);
int main(void)
c 一些注意事項
1.long int的位元組資訊 int在32位系統下是4位元組,long在32位也是4位元組,在64位int不變,但是long變成8位元組,所以我們的編譯器不同可能會導致我們處理int,long不同 2.注意c 有時候的強制型別轉換 注意最大最小值是不一樣的,int max 231 1 或 int...
一些注意事項
0.解題思路 a.普通思路 b.遞迴 bfs dfs c.動態規劃 比遞迴快 d.雙指標 比for迴圈快 如 快慢指標方法 e.用棧 1.陣列初始化 int a new int 5 a 0 預設為0.二維陣列也一樣。boolean b new boolean 5 b 0 預設為false.strin...
php XPATH一些注意事項
40集 建立乙個dom物件並讀取xml檔案到記憶體中 dom new domdocument 1.0 utf 8 dom load book.xml 建立乙個xpath物件 xpath new domxpath dom sql bookstore book 1 title 注意此處路徑數字從1開始,...