機器語言==》面向過程的==》面向對象的。
重載:函數名相同,參數不一樣(類型,個數);
重載不是面向對象的特征,只是簡化編程互操作的一種方案;
注意:對函數(方法)重載要謹慎、注意操作符重載和覆蓋;
復雜數據類型:
數組、指針、結構、類
數組:把同類型的值存儲在同一變量名下;仍需要被聲明為某一特定類型:float,char, int————
注意:c語言中我們一般把字符串存儲在一個字符數組中,但C++中我們一般使用一個對象string。
對齊問題:32位系統是四字節,64位是8字節。有內存對齊、文件對齊。
指針是一個用來存放地址的變量 type*pointerName;故可以把地址放在指針變量裡。
星號的用途:第一種是用於創建指針,第二種是對指針進行解引用。
C++支持無類型指針void * vPpinter;解引用之前必須先轉換為一種適當的數據類型。
指針和數組:
數組名是數組首地址。
思考:
#include <iostream> using namespace std; int main() { const unsigned short ITEM = 5; int intArray[ITEM] = {1,2,3,4,5}; char charArray[ITEM] = {'a','s','d','f','g'}; int *intPtr = intArray; char *charPtr = charArray; cout << "整形" << endl; for( int i = 0; i < ITEM; i++) { cout << *intPtr << " at " << reinterpret_cast<unsigned long>(intPtr) << endl; intPtr++; } for( int i = 0; i < ITEM; i++) { cout << *intPtr << " at " << intPtr << endl; intPtr++; } cout<< "字符型" << endl; for( int i = 0; i < ITEM; i++) { cout << *charPtr << " at " << reinterpret_cast<unsigned long>(charPtr) << endl; charPtr++; } for( int i = 0; i < ITEM; i++) { cout << *charPtr << " at " << charPtr << endl; charPtr++; } return 0; }
字符和整形為啥輸出結果有差異:reinterpret_cast<unsigned long>()帶來的影響
?