C++ note 1
就常問的問題或是我常搞錯的地方來說
1 cin cout 箭頭常常搞錯?
簡單講箭頭指向你要放東西的地方 例如:
cout<<"test"<<endl; //把"test"推到output出去
cin>>input; //把使用者輸入值存入input的變數
2 function overload 多重定義
即一個函數有多種輸入參數的方法,以例子說明
int line(point a,point b);
int line(point a,vector b)
這個例子是說明一條線可以有幾種方法表示
第一種是輸入兩個點
第二種是輸入一個點後,再輸入一個向量(該vector不為基本資料結構的那個vector
只是為了方便表示)
3 default arguments 預設引數初值
int permutation(int x,int y=1)
{
int fra=1;
for(int i=1;i<=x;i++)
fra*=i;
if(y!=1)
{
int fra2;
for(int j;j<=y;j++)
fra2*=j;
return fra/fra2;
}
return fra;
}
permutation(5)=120;
permutation(5,3)=20;
argument的參數數目不一樣...第一個例子有用到預設值y=1,第二個沒有
ps:有預設初值的引數要放在右邊
5 static
class Employee
{
static int temp;
}
此靜態資料成員為各物件(同類別)的公用資料,而non-static資料為個體之私有資料
6 inline function
inline函數跟C的Macro很像,目的是為了增進程式效率
不過在傳統C上面,Marco無法檢查引數的型態,也無法指定回傳的型態,使用inline可
避免這種情況
Macro: #define MAX(x,y) (x>y)?(x):(y)
inline: inline int compare(int x,int y){return x>y?x:y;}
在C++中,較短的function常宣告成inline(3行以下建議)
7 const
const變數在宣告時即須給定常數值,const class也是一樣,宣告就得給初始值
(1)
例:
const int x=5;
const int *p;
p=&x;
const int *p指的是有個指標指向const int,該指標不為constant,
但是指向的東西為constant
(2)常數的指標也能指向一般變數(但一般指標不能指向常數)
例:
int x=10;
const int *p;
p=&x;
這個例子,x為普通變數,可以任意的儲存新值,但是p為常數指標,不可經由*p把新值
存入x.
利用這個,可以達到"主函數把x主位址傳給副函數時,擔心x值受到對方傷害,就該用
常數指標"
(3)常數位址
例
int* const p;
這個表示了,p為常數位址,*p為一般的整數,即*p可以改變,但是p(位址)不可以改變
8. friend 朋友:自己的東西,跟好朋友分享
分兩種friend function和friend class
(1) friend function
class A
{
public:
A(int r=0){x=r;}
friend int f(const A &a); //A認為f為他的好朋友
private:
int x;
}
int f(const A &a)
{return a.x*a.x;}
A覺得f是他的朋友,可以自由的使用它的資料x
(2) friend class差不多,也用個簡單例子說明
class WATCH
{
int hour,minute;
public:
void set(int h,int m){hour=h;minute=m;}
friend class CLOCK; //WATCH認為CLOCK為他的好朋友
}
class CLOCK
{
int hour,mimute;
public:
set_with_watch(WATCH w)
{hour=w.hour;minute=w.minute;} //自由的使用WATCH的資料
}
--
1. Inheritance 繼承
2. Virtual function 是什麼
3. Pure virtual function 是什麼
4. Template 是什麼
5. 多重繼承有什麼影響
6. Friend class 是什麼
7. Abstract class 是什麼
8. New, Operation new 與 Placement new 是什麼
9. Thread 是什麼
10. Critical section 是什麼
11. polymorphism 是啥
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.21.108
※ 編輯: maxmilian 來自: 140.112.21.108 (12/10 13:34)