锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
濡傦細
class CObject{
public:
CObject()
{
}
virtual ~CObject()
{
};
};
class CX: public CObject
{
public:
CX(){...};
~CX(){...};
}
void f()
{
CObject *px;
px = new CX;
delete px;
}
鍚﹀垯delete px鍙細鎵цCObject鐨勬瀽鏋勫嚱鏁幫紝鑰屼笉鏄湡姝g殑CX鏋愭瀯鍑芥暟銆?br>鐜板湪鐨勯棶棰樻槸錛屾垜浠兂鎶奀Object鍋氬嚭鎶借薄綾伙紝涓嶈兘鐩存帴鏋勯犲璞★紝闇瑕佸湪鍏朵腑瀹氫箟涓涓?layer id="google-toolbar-hilite-9" style="background-color: Fuchsia; color: black;">綰櫄鍑芥暟銆傚鏋滃叾涓病鏈夊叾浠栧悎閫傜殑鍑芥暟錛屽彲浠ユ妸鏋愭瀯鍑芥暟瀹氫箟涓虹函铏氱殑錛屽嵆灝嗗墠闈㈢殑CObject瀹氫箟鏀規垚錛?br>
class CObject{
public:
CObject()
{
}
virtual ~CObject() = 0;
};
鍙?
鏄紝榪欐浠g爜涓嶈兘閫氳繃緙栬瘧錛岄氬父鏄摼鎺ラ敊璇紝涓嶈兘鎵懼埌~CObject()鐨勫紩鐢?gcc鐨勯敊璇姤鍛?銆傝繖鏄洜涓猴紝鏋愭瀯鍑芥暟銆佹瀯閫犲嚱鏁板拰鍏朵粬鍐呴儴鍑芥暟涓嶄竴
鏍鳳紝鍦ㄨ皟鐢ㄦ椂錛岀紪璇戝櫒闇瑕佷駭鐢熶竴涓皟鐢ㄩ摼銆備篃灝辨槸錛孋X鐨勬瀽鏋勫嚱鏁伴噷闈㈤殣鍚皟鐢ㄤ簡CObecjt鐨勬瀽鏋勫嚱鏁般傝屽垰鎵嶇殑浠g爜涓紝緙哄皯锝濩Obecjt鐨勫嚱鏁?
浣擄紝褰撶劧浼氬嚭鐜伴敊璇?br>
榪欓噷闈㈡湁涓涓鍖猴紝鏈変漢璁や負錛寁irtual f()=0榪欑
class CObject{
public:
CObject()
{
}
virtual ~CObject() = 0;
};
CObject::~CObject()
{
}
浠庤娉曡搴︽潵璇達紝涓嶅彲浠ュ皢涓婇潰鐨勬瀽鏋勫嚱鏁扮洿鎺ュ啓鍏ュ畾涔変腑錛堝唴鑱斿嚱鏁扮殑鍐欐硶錛夈傝繖鎴栬鏄竴涓笉姝d氦鍖栫殑鍦版柟銆?br>
榪欎釜闂鐪嬭搗鏉ユ湁浜涘鏈寲錛屽洜涓轟竴鑸垜浠畬鍏ㄥ彲浠ュ湪CObject涓壘鍒頒竴涓洿鍔犻傚悎鐨勫嚱鏁幫紝閫氳繃灝嗗叾瀹氫箟涓烘病鏈夊疄鐜頒綋鐨?layer id="google-toolbar-hilite-14" style="background-color: Fuchsia; color: black;">綰櫄鍑芥暟錛岃屽皢鏁翠釜綾誨畾涔変負鎶借薄綾匯備絾榪欑鎶鏈篃鏈変竴浜涘簲鐢紝濡傝繖涓緥瀛愶細
class CB{
public:
virtual ~CB(){};
virtual void Hiberarchy() const = 0;
};
void CB::Hiberarchy() const
{
std::cout <<"CB::";
}
class CD : public CB
{
public:
CD()
{
};
virtual void Hiberarchy() const
{
CB::Hiberarchy();
std::cout <<"CD::";
};
virtual void f()
{
}
};
int main(){
CB* x=new CD();
x->Hiberarchy();
x->CB::Hiberarchy();
return 0;
}
鍦?
榪欎釜渚嬪瓙涓紝鎴戜滑璇曞浘鎵撳嵃鍑虹被鐨勭戶鎵垮叧緋匯傚湪鏍瑰熀綾諱腑瀹氫箟浜嗚櫄鍑芥暟Hiberarchy錛岀劧鍚庡湪姣忎釜媧劇敓綾諱腑閮介噸杞芥鍑芥暟銆傛垜浠啀涓嬈$湅鍒幫紝鐢變簬鎯蟲妸CB
鍋氭垚涓娊璞$被錛岃岃繖涓被涓病鏈夊叾浠栧悎閫傜殑鏂規硶鎴愬憳鍙互瀹氫箟涓虹函铏氱殑錛屾垜浠繕鏄彧濂藉皢Hiberarchy瀹氫箟涓虹函铏氱殑銆傦紙褰撶劧錛屽畬鍏ㄥ彲浠ュ畾涔夛綖CB鍑芥暟錛?
榪欏氨鍜屼笂闈㈢殑璁ㄨ涓鏍蜂簡銆俕_^錛?br>
鍙﹀錛屽彲浠ョ湅鍒幫紝鍦╩ain涓湁涓ょ璋冪敤鏂規硶錛岀涓縐嶆槸鏅氱殑鏂瑰紡錛岃繘琛屽姩鎬侀摼鎺ワ紝鎵ц铏氬嚱鏁幫紝寰楀埌緇撴灉"CB::CD::"錛涚浜岀鏄寚瀹氱被鐨勬柟寮忥紝灝變笉鍐嶆墽琛岃櫄鍑芥暟鐨勫姩鎬侀摼鎺ヨ繃紼嬩簡錛岀粨鏋滄槸"CB::"銆?br>
閫氳繃涓婇潰鐨勫垎鏋愬彲浠ョ湅鍑猴紝瀹氫箟
“鎴戦夋嫨鐨勬槸灝嗕釜鍒殑鍑芥暟鎻忚堪涓虹函铏氱殑鏂瑰紡錛屾病鏈夐噰鐢ㄥ皢瀹屾暣鐨勭被澹版槑瀹氫箟涓烘娊璞$殑褰㈠紡錛岃繖鏄洜涓?layer id="google-toolbar-hilite-16" style="background-color: Fuchsia; color: black;">綰櫄鍑芥暟鐨勬蹇墊洿鍔犵伒媧諱竴浜涖傛垜寰堢湅閲嶈兘澶熷垎闃舵瀹氫箟綾葷殑鑳藉姏錛涗篃灝辨槸璇達紝鎴戝彂鐜伴鍏堝畾涔変竴浜?layer id="google-toolbar-hilite-17" style="background-color: Fuchsia; color: black;">綰櫄鍑芥暟錛屽茍鎶婂彟澶栦竴浜涚暀緇欒繘涓姝ョ殑媧劇敓綾誨幓瀹氫箟涔熸槸寰堟湁鐢ㄧ殑”銆?br>
鎴?
榪樻病鏈夊畬鍏ㄧ悊瑙e悗涓鍙ヨ瘽錛屾垜鎯充粠鍙﹀涓涓搴︽潵闃愯堪榪欎釜姒傚康銆傞偅灝辨槸錛屽湪涓涓灞傚鏉傜被緇撴瀯涓紝涓棿灞傛鐨勭被搴旇鍏蜂綋鍖栦竴浜涙娊璞″嚱鏁幫紝浣嗗緢鍙兘騫朵笉鏄墍鏈?
鐨勩備腑闂寸被娌″繀瑕佺煡閬撴槸鍚﹀叿浣撳寲浜嗘墍鏈夌殑铏氬嚱鏁幫紝浠ュ強鍏剁鍏堝凡緇忓叿浣撳寲浜嗗摢浜涘嚱鏁幫紝鍙鍏蟲敞鑷繁鐨勮亴璐e氨鍙互浜嗐備篃灝辨槸璇達紝涓棿綾繪病蹇呰鐭ラ亾鑷繁鏄惁鏄竴
涓湡姝g殑鎶借薄綾伙紝璁捐鑰呬篃灝變笉鐢ㄨ冭檻鏄惁闇瑕佸湪榪欎釜涓棿綾葷殑綾葷駭鍒笂鍔犱笂綾諱技abstract鐨勮鏄庝簡銆?br>
褰撶劧錛屼竴涓璦鐨勮璁℃湁澶氱鍥犵礌錛屽ソ鍧忛兘鏄悇涓柟闈㈢殑銆傝繖鍙槸涓涓В閲婅屽凡銆?br>
鏈鍚庯紝鎬葷粨涓涓嬪叧浜庤櫄鍑芥暟鐨勪竴浜涘父瑙侀棶棰橈細
铏氬嚱鏁版槸鍔ㄦ佺粦瀹氱殑錛屼篃灝辨槸璇達紝浣跨敤铏氬嚱鏁扮殑鎸囬拡鍜屽紩鐢ㄨ兘澶熸紜壘鍒板疄闄呯被鐨勫搴斿嚱鏁幫紝鑰屼笉鏄墽琛屽畾涔夌被鐨勫嚱鏁般傝繖鏄櫄鍑芥暟鐨勫熀鏈姛鑳斤紝灝變笉鍐嶈В閲婁簡銆?
鏋勯犲嚱鏁頒笉鑳芥槸铏氬嚱鏁般傝屼笖錛屽湪鏋勯犲嚱鏁頒腑璋冪敤铏氬嚱鏁幫紝瀹為檯鎵ц鐨勬槸鐖剁被鐨勫搴斿嚱鏁幫紝鍥犱負鑷繁榪樻病鏈夋瀯閫犲ソ銆?
鏋愭瀯鍑芥暟鍙互鏄櫄鍑芥暟錛岃屼笖錛屽湪涓涓鏉傜被緇撴瀯涓紝榪欏線寰鏄繀欏葷殑銆?
灝嗕竴涓嚱鏁板畾涔変負
闈炵函鐨勮櫄鍑芥暟蹇呴』鏈夊畾涔変綋錛屼笉鐒舵槸涓涓敊璇?
媧?
鐢熺被鐨勯噸杞借櫄鍑芥暟瀹氫箟蹇呴』鍜岀埗綾誨畬鍏ㄤ竴鑷淬傞櫎浜嗕竴涓壒渚嬶紝濡傛灉鐖剁被涓繑鍥炲兼槸涓涓寚閽堟垨寮曠敤錛屽瓙綾婚噸杞芥椂鍙互榪斿洖榪欎釜鎸囬拡錛堟垨寮曠敤錛夌殑媧劇敓銆備緥濡傦紝鍦ㄤ笂闈?
鐨勪緥瀛愪腑錛屽湪CB涓畾涔変簡 virtual CB* clone(); 鍦–D涓彲浠ュ畾涔変負 virtual CD*
clone()銆傚彲浠ョ湅鍒幫紝榪欑鏀炬澗瀵逛簬Clone妯″紡鏄潪甯告湁鐢ㄧ殑銆?
鍏朵粬錛屾湁寰呰ˉ鍏呫?
]]>
聽 Yesterday my friend had taken interview in Microsft.If u know this
Plz answer this
main() 聽 // line 1
{
聽聽 printf("TWO");
} 聽 //line4
U don't change from line1 to line4. 聽u will add anything before the
main function only.
write the solution with 10 ways.
We want the ouput is->
One
Two 聽 聽 聽 聽 聽 聽//娉ㄦ剰錛屼笉鏄疶WO錛?br />Three
There are several ways to solve the question, the following is:
First錛歵o ignore the main funcion
#include <stdio.h>
int main(int argc, char *argv[])
{
聽聽 聽 聽 聽printf("One\nTwo\nThree\n");
聽聽 聽 聽 聽return 0;
}
#define main XXX
main() 聽 // line 1
{
聽聽 printf("TWO");
} 聽 //line4
The second way:To ignore the printf function
int xxx(const char* x)
{
聽聽 聽 聽 聽return printf("One\nTwo\nThree\n");
}
#define printf xxx
main() 聽 // line 1
{
聽聽 printf("TWO");
} 聽 //line4
The last way: using struct
#include <stdio.h>
struct Foo
{
聽聽 聽 聽 聽Foo(){printf("One\nTwo\nThree\n");exit(0);}
}foo;
main() 聽 // line 1
{
聽聽 printf("TWO");
} 聽 //line4