ÈçºÎʹÓ÷ºÐÍÄ£擬virtual? (C/C++) (template)
ÍøÉÏÒ»µÀ½ðɽµÄÃæÊÔÌ⣺
http://topic.csdn.net/u/20100524/14/0eff992a-2849-4db6-bdaa-d4a200e79b7c.html
Çë·Ö±ðÓÃC++µÄÃæÏò¶ÔÏóºÍ·ºÐÍ»úÖÆ£¬±àдʵÏÖTemplate MethodģʽµÄʾÀý´úÂ룬²¢±È½ÏÁ½ÖÖ·½Ê½¸÷×ÔµÄÓÅȱµã¡£
ÓÃÐ麯ÊýʵÏÖTemplate MethodµÄ·½Ê½¾Í²»¶à˵ÁË¡£Ó÷ºÐ͵ķ½Ê½ÊµÏÖ¶à̬ÔÚATLÀïÃæÓдóÁ¿µÄÓõ½£¡
·ºÐ͵ÄÓÅÊÆ¾ÍÔÚÓÚÆäÖ´ÐÐЧÂʸߣ¡±àÒëÆÚ¶à̬£¡ÕâÒ²ÊÇATL/WTLÓÅÓÚMFCµÄµØ·½£¡
ÖÁÓÚ·ºÐÍʵÏÖ¶à̬µÄÁÓÊÆ£¬ÎÒÍüÁË£¬µ«Ó¦¸ÃÊÇ·ºÐÍûÓÐÐ麯Êý¹¦ÄÜÇ¿´ó£¬ºÃÏñÔڶ༶¼Ì³ÐϾÍʧЧÁ˰ɣ¿±ÈÈçÖ»ÄÜÓÃÓÚBASE-DeriveÁ½¼¶¼Ì³Ð£¬¶ÔÓÚBase-Derive-DeriveDeriveÔò²»ÐУ¡
²»¶à˵ÁË£¬¿´¿´ÈçºÎÓ÷ºÐÍʵÏÖTemplate Methodģʽ°É¡££º£©
ת×Ô£ºhttp://kb.cnblogs.com/a/873808/
Abstract
OO×îÖØÒªµÄ¶àÐÍ/¶à態¾ÍÊÇÓÃ繼³Ð + virtual來Íê³É£¬virtual雖ºÃÓ㬵«¸¶³öµÄ´ú價¾ÍÊÇ¡º¸ü¶àµÄ記憶體¡»+¡º¸üÂýµÄËÙ¶È¡»£¬±¾ÎĽé紹ʹÓ÷ºÐÍ來Ä£擬virtual機ÖÆ¡£
Introduction
Ê×ÏÈ聲Ã÷£¬這並²»ÊÇÎÒ獨創µÄ·½·¨£¬¶øÊÇATLËùʹÓõķ½Ê½£¬請參¿¼(轉貼) ATL²¼á£Ö®ÏµÄÃØÃÜ(3) (C++) (template)
為ʲ麼ÒªÓ÷ºÐÍ來Ä£擬virtual機ÖÆÄØ?
Ö÷ÒªÊÇÒò為virtual機ÖÆÐèÀûÓõ½vtable£¬ËùÒÔ較Õ¼記憶體£¬Óֵÿ¿vptrÔÚrun-time執ÐжàÐÍ£¬ËùÒÔ執ÐÐËÙ¶È較Âý£¬ËùÒÔATL²ÅÏëÀûÓ÷ºÐÍ這種compile-time機ÖÆ讓component盡¿ÉÄܵÄС£¬盡¿ÉÄܵĿ졣
Example Code
/**//*
(C) OOMusou 2007 http://oomusou.cnblogs.com
Filename : template_virtual.cpp
Compiler : Visual C++ 8.0 / BCB 6.0 / gcc 3.4.2 / ISO C++
Description : Demo how to use generics to simulate virtual
Release : 08/28/2007 1.0
*/
#include <iostream>
using namespace std;
template <typename Derived>
class Base {
public:
void func()&nb
Ïà¹ØÎĵµ£º
CµÄstaticµÄÓ÷¨:
1.¶ÔÓÚº¯ÊýÀïµÄ¾Ö²¿±äÁ¿,¸Ä±äµÄÊÇËüµÄÉú´æÖÜÆÚ,Õâ¸ö±äÁ¿»áÒ»Ö±´æÔÚ,µ½³ÌÐò½áÊø. º¯ÊýÍⲿ·ÃÎʲ»µ½Õâ¸ö±äÁ¿.
2.¶ÔÓÚÈ«¾ÖµÄ±äÁ¿,¸Ä±äµÄÊÇËüµÄ×÷Ó÷¶Î§,Õâ¸ö±äÁ¿Ö»ÔÚ±¾ÎļþÄÚÓÐЧ.ÆäËüµÄ.cÎļþ¿´²»µ½.
µ±È»ËüµÄÉúÃüÖÜÆÚÊǺͳÌÐòÒ»ÑùµÄ ......
ÎÄÕÂÀ´×Ô£ºhttp://mayer.vokaa.com/archives/16
¶ÔÓÚÒ»¸öǰ¶Ë¹¤×÷Õߣ¬¶¼ÖªµÀ·ûºÏW3C¹æ·¶¶ÔÓÚÍøÒ³µÄ¿çä¯ÀÀÆ÷¹¤×÷´øÀ´ºÃ´¦£¬²¢ÄÜÊ¹ÍøÒ³ÔÚ²»Í¬µÄä¯ÀÀÆ÷Ö®¼ä»¥Ïà¼æÈÝ¡£
ÔÚÕâÀïÎÒÃÇÒ»Ò»Áоٻ¥ÁªÍøÉÏËùÌṩµÄ½â¾ö°ì·¨¼°Ò»Ð©ÎÒ¸öÈ˵Ľ¨Ò鼰ʵ¼ù°¸Àý¡£
Æäʵ£¬ÏÖÔÚ¶àÊýÈ˶¼»áʹÓÃHackµÄ·½·¨½â¾ö£¬µ«Èç¹ûDIVºÍCSSµÄ½á¹¹ÇåÎú¡¢ºÏÀí£ ......
ת
ÔØ×Ôhttp://www.builder.com.cn/
static
ÊÇc++Öкܳ£ÓõÄÐÞÊηû£¬Ëü±»ÓÃÀ´¿ØÖƱäÁ¿µÄ´æ´¢·½Ê½ºÍ¿É¼ûÐÔ£¬ÏÂÃæÎÒ½«´Ó static ÐÞÊηûµÄ²úÉúÔÒò¡¢×÷ÓÃ̸Æð£¬È«Ãæ·ÖÎöstatic
ÐÞÊηûµÄʵÖÊ¡£
¡¡¡¡static µÄÁ½´ó×÷ÓÃ:
¡¡¡¡Ò»¡¢¿ØÖÆ´æ´¢·½Ê½£º
¡¡¡¡static±»ÒýÈëÒÔ¸æÖª±àÒëÆ÷£¬½«±ä ......
http://west263.com/info/html/chengxusheji/C-C--/20080224/9240.html
1. gcnew·µ»ØµÄÊǸö¾ä±ú(Handle)£¬¶ønew·µ»ØµÄÊÇʵ¼ÊµÄÄÚ´æµØÖ·.
¡¡¡¡2. gcnew´´½¨µÄ¶ÔÏóÓÉÐéÄâ»úÍйܣ¬¶ønew´´½¨µÄ¶ÔÏó±ØÐë×Ô¼ºÀ´¹ÜÀíºÍÊÍ·Å.
¡¡¡¡µ±È»£¬´Ó³ÌʽԱµÄ½Ç¶ÈÀ´Ëµ£¬¹ÜËûÊǾä±ú»¹ÊÇʲôÆäËûµÄ¶«Î÷£¬×ÜÅܲ»µôÊǶÔij¿éÄÚ´æµØÖ·µÄÒýÓã¬Êµ¼Ê ......
enumÀàÐ͵ijÉÔ±£¬Ä¬ÈÏÇé¿öÏÂÊÇ´Ó0¿ªÊ¼¸³Öµ£»
Èç¹ûÖмäij¸ö³ÉÔ±½øÐÐÁËÊÖ¶¯¸³ÖµµÄ»°£¬¸Ã³ÉÔ±µÄÏÂÒ»¸ö³ÉÔ±µÄֵΪ¸Ã³ÉÔ±µÄÖµ+1
#include <stdio.h>
typedef enum {
PLAYMODE = 1, // ĬÈÏ´Ó0¿ªÊ¼
PAUSEMODE,
STOPMODE = 5,
TRACKRPTMODE,
MIXMODE
}Status_t;
int main()
{
int n = 4;
sw ......