èå½æ°çä½ç¨
2009-02-09 10:44:14
å¨é¢å对象çC++è¯è¨ä¸ï¼èå½æ°ï¼virtual functionï¼æ¯ä¸ä¸ªé常éè¦çæ¦å¿µãå 为å®å
åä½ç°äºé¢å对象ææ³ä¸ç继æ¿åå¤ææ§è¿ä¸¤å¤§ç¹æ§ï¼å¨C++è¯è¨éåºç¨æ广ãæ¯å¦å¨å¾®è½¯çMFCç±»åºä¸ï¼ä½ ä¼åç°å¾å¤å½æ°é½ævirtualå
³é®åï¼ä¹å°±æ¯è¯´ï¼å®ä»¬é½æ¯èå½æ°ãé¾æªæ人çè³ç§°èå½æ°æ¯C++è¯è¨çç²¾é«ã
é£ä¹ï¼ä»ä¹æ¯èå½æ°å¢ï¼æ们å
æ¥çç微软ç解éï¼
èå½æ°æ¯æä¸ä¸ªç±»ä¸ä½ å¸æéè½½çæåå½æ°ï¼å½ä½ ç¨ä¸ä¸ªåºç±»æéæå¼ç¨æåä¸ä¸ªç»§æ¿ç±»å¯¹è±¡çæ¶åï¼ä½ è°ç¨ä¸ä¸ªèå½æ°ï¼å®é
è°ç¨çæ¯ç»§æ¿ç±»ççæ¬ã
ââæèªMSDN
è¿ä¸ªå®ä¹è¯´å¾ä¸æ¯å¾æç½ãMSDNä¸è¿ç»åºäºä¸ä¸ªä¾åï¼ä½æ¯å®çä¾åä¹å¹¶ä¸è½å¾å¥½ç说æé®é¢ãæ们èªå·±ç¼åè¿æ ·ä¸ä¸ªä¾åï¼
ï¼i nclude "stdio.h"
ï¼i nclude "conio.h"
class Parent
{
public:
char data[20];
void Function1();
virtual void Function2(); // è¿é声æFunction2æ¯èå½æ°
}parent;
void Parent::Function1()
{
printf("This is parent,function1\n");
}
void Parent::Function2()
{
printf("This is parent,function2\n");
}
class Child:public Parent
{
void Function1();
void Function2();
} child;
void Child::Function1()
{
printf("This is child,function1\n");
}
void Child::Function2()
{
printf("This is child,function2\n");
}
int main(int argc, char* argv[])
{
Parent *p; // å®ä¹ä¸ä¸ªåºç±»æé
if(_getch()=='c') // å¦æè¾å
¥ä¸ä¸ªå°ååæ¯c
p=&child; // æå继æ¿ç±»å¯¹è±¡
else
p=&parent; // å¦åæååºç±»å¯¹è±¡
p->Function1(); // è¿éå¨ç¼è¯æ¶ä¼ç´æ¥ç»åºParent::Function1()ç
å
¥å£å°åã
p->Function2(); // 注æè¿éï¼æ§è¡çæ¯åªä¸ä¸ªFunction2ï¼
return 0;
}
ç¨ä»»æçæ¬çVisual C++æBorland C++ç¼è¯å¹¶è¿è¡ï¼è¾å
¥ä¸ä¸ªå°ååæ¯cï¼å¾å°ä¸é¢çç»æï¼
This is parent,function1
This is child,function2
为ä»ä¹ä¼æ第ä¸è¡çç»æå¢ï¼å 为æ们æ¯ç¨ä¸ä¸ªParentç±»çæéè°ç¨å½æ°Fuction1()ï¼è½ç¶å®é
ä¸è¿ä¸ªæéæåçæ¯Childç±»ç对象ï¼ä½ç¼è¯å¨æ æ³ç¥éè¿ä¸äºå®ï¼ç´å°è¿è¡çæ¶åï¼ç¨åºæå¯ä»¥æ ¹æ®ç¨æ·çè¾å
¥å¤æåºæéæåç对象ï¼ï¼å®åªè½æç
§è°ç¨Parentç±»çå½æ°æ¥ç解并ç¼è¯ï¼æ以æ们çå°äºç¬¬ä¸è¡çç»æã
é£ä¹ç¬¬äºè¡çç»æåæ¯æä¹åäºå¢ï¼æ们注æå°ï¼Function2()å½æ°å¨åºç±»ä¸è¢«virtualå
³é®å修饰ï¼ä¹å°±æ¯è¯´ï¼å®æ¯ä¸ä¸ªèå½æ°ãèå½æ°æå
³é®çç¹ç¹æ¯âå¨æèç¼âï¼å®å¯ä»¥å¨è¿è¡æ¶å¤ææéæåç对象ï¼å¹¶èªå¨è°ç¨ç¸åºçå½æ°ãå¦ææ们å¨è¿è¡ä¸é¢çç¨åºæ¶ä»»æè¾å
¥ä¸ä¸ªécçå符ï¼ç»æå¦ä¸ï¼
This is parent,function1
This is parent,function2
温馨提示:答案为网友推荐,仅供参考