Jan 10

通過using 關鍵字重新聲明基類成員的訪問控制屬性

 

能從子類賦值向基類,反之則不行,即使是指針或者引用也不行。

 

基類中定義的static成員,共享於基類和子類。

 

貼一段檢查身份證號碼的C代碼,絕對原創,至於算法,那是copy別處的,呵呵。

 

 

bool CheckID(string ID) {

const int auxiliary_array[] = {

7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1

};

const int length_of_id = 18;

 

if (ID.size() != length_of_id) {

return false;

} else {

const short offset_char = 48;

int sum = 0;

for (int i=0; i<length_of_id-1; ++i) {

char c = ID[i];

int auxiliary = static_cast<int>(c) - 48;

sum += auxiliary*auxiliary_array[i];

}

 

int jym = sum % 11;

char cJYM = '/0';

switch (jym)

{

case 0:

cJYM = '1';

break;

case 1:

cJYM = '0';

break;

case 2:

cJYM = 'x';

break;

case 3:

cJYM = '9';

break;

case 4:

cJYM = '8';

break;

case 5:

cJYM = '7';

break;

case 6:

cJYM = '6';

break;

case 7:

cJYM = '5';

break;

case 8:

cJYM = '4';

break;

case 9:

cJYM = '3';

break;

case 10:

cJYM = '2';

break;

}

return ID[length_of_id-1] == cJYM;

}

return false;

}

 

 

×××××××××××××××××××××××××××××××××

×××××××××××××××××××××××××××××××××

 

類內地名稱覆蓋,

子類會覆蓋基類的同名函數,不存在函數重載的問題,只要名稱相同,就覆蓋。

子類可以使用以下方式訪問被覆蓋的函數:

 

derived.base::function();

 

同理,局部作用域的名稱也會覆蓋全局的名稱:

string init(); // the name init has global scope

void fcn() { int init = 0; // init is local and hides global init

string s = init(); // error: global init is hidden

}

 

 

 

×××××××××××××××××××××××××××××××××

×××××××××××××××××××××××××××××××××

 

純虛函數可以這麼着:
基類定義並實現了的虛函數
子類1級繼承基類,將該虛函數定義爲純虛
子類2級繼承1級,實現該虛函數。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章