虛函數(shù)的作用是可以通過基類的指針或者引用調(diào)到派生類的這個函數(shù)。
成都創(chuàng)新互聯(lián)公司專注于余干網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供余干營銷型網(wǎng)站建設(shè),余干網(wǎng)站制作、余干網(wǎng)頁設(shè)計、余干網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務(wù),打造余干網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供余干網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
你上面的代碼是演示虛函數(shù)的作用,不用去簡便他。
你可以把這個程序中的virtual全部刪除掉,然后再運行程序,觀察一下兩次結(jié)果的不一樣,估計你就能理解虛函數(shù)的作用了。
#include?stdio.h
#include?stdlib.h
typedef?struct?{
int?n;
double?*value;
}Vector;
void?createvector(Vector?*x,?int?n){
x-n=n;
double?*value=malloc(sizeof(double)*n);
x-value=value;
}
void?deletevector(Vector?*x){
free(x-value);
}
int?main()
{???
int?n,i;
Vector?*temp=malloc(sizeof(Vector));
printf("n=");
scanf("%d",n);
createvector(temp,n);
for(i=0;in;i++){
scanf("%lf",temp-value+sizeof(double)*i);
}
printf("%d\n",n);
for(i=0;in;i++){
printf("%lf\n",*(temp-value+sizeof(double)*i));
}
deletevector(temp);
free(temp);
return?0;
}
class 冰箱: public goods
{ public:
void price(){ 計算冰箱價格;}
};
class 彩電: public goods
{ public:
void price(){ 計算彩電價格;}
};
class 空調(diào): public goods
{ public:
void price(){ 計算空調(diào)價格;}
};
class goods
{ public:
virtual void price() {}//虛函數(shù)
};
void fun(goods *p)
{ p-price();
}
void main()
{ goods *p;
冰箱 A;
p=A;
fun(p);
//其他類同 注意調(diào)用格式。必須是 基類指針。
}
C語言可以通過宏,在你需要的位置宏展開出一個新的函數(shù)。
例如:
#define XXX(funcname) \
int funcname (int arg1, int arg2) \
{ return arg1 + arg2; }
但這也是編譯期就決定好了的,也不能實現(xiàn)運行期動態(tài)創(chuàng)建。
文章題目:c語言動態(tài)創(chuàng)建虛函數(shù) C++虛函數(shù)表精講教程,直戳多態(tài)的實現(xiàn)機制
轉(zhuǎn)載來于:http://jinyejixie.com/article34/dodopse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、做網(wǎng)站、云服務(wù)器、網(wǎng)站改版、標(biāo)簽優(yōu)化、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)