锘??xml version="1.0" encoding="utf-8" standalone="yes"?>#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SetSize 256 //瀛楃闆嗗ぇ灝?/span>
//璇存槑錛氭煡鎵懼瓧絎︿覆涓瓧絎﹂棿涓嶅悓鐨勬渶澶у瓙涓?br>
//鍙傛暟錛歴tring 寰呮悳绱㈠瓧絎︿覆
// rst 瀛樻斁鎵懼埌鐨勬渶澶у瓙涓?br>
//榪斿洖錛氭壘鍒版渶澶у瓙涓查暱搴?/span>
int findMaxSubstring(const char *string, char *rst)
{
const char *p = string;
const char *substring = p; //褰撳墠瀛愪覆
int length = 0; //褰撳墠瀛愪覆闀垮害
const char *maxSubstring = substring; //宸茬粡鎵懼埌鐨勬渶澶у瓙涓?/span>
int maxLength = 0; //宸茬粡鎵懼埌鐨勬渶澶у瓙涓查暱搴?br>
// 閬嶅巻瀛楃涓茶繃紼嬩腑錛屽瓧絎︽渶鍚庝竴嬈″嚭鐜扮殑浣嶇疆
const char* position[SetSize];
memset(position, 0, SetSize * sizeof(char *));
char ch; //
while ((ch = *p) != '\0')
{
if (position[ch] < substring)
{ //瀛楃鍦ㄥ綋鍓嶅瓙涓查嬈″嚭鐜?nbsp;
length++;
if (length > maxLength)
{
maxSubstring = substring;
maxLength = length;
}
}
else
{
substring = position[ch] + 1; //褰撳墠瀛愪覆浠庤瀛楃涓婃鍑虹幇鐨勪綅緗悗闈㈠紑濮?/span>
length = p - position[ch];
}
position[ch] = p; // 淇濆瓨瀛楃鐨勪綅緗?/span>
p++;
}
// 鎷瘋礉鎵懼埌鐨勬渶澶у瓙涓?/span>
strncpy(rst, maxSubstring, maxLength);
rst[maxLength] = '\0';
return maxLength;
}
鎹榪欐槸寰蔣闈㈣瘯棰樸?br>
]]>
const int size = 9;
char c[size];
1.VS2005 緙栬瘧涓?C 浠g爜(/TC)
緙栬瘧涓嶉氳繃
閿欒 1 error C2057: expected constant expression
閿欒 2 error C2466: cannot allocate an array of constant size 0
閿欒 3 error C2133: 'c' : unknown size
1.VS2005 緙栬瘧涓?C 浠g爜(/TC)
緙栬瘧涓嶉氳繃
閿欒 1 error C2057: expected constant expression
閿欒 2 error C2466: cannot allocate an array of constant size 0
閿欒 3 error C2133: 'c' : unknown size
----------------------------------------鍗庝附鍒嗗壊綰?---------------------------------------
閲嶈澆綆ご鎿嶄綔絎?br>綆ご鎿嶄綔絎︿笌浼椾笉鍚屻傚畠鍙兘琛ㄧ幇寰楀儚浜屽厓鎿嶄綔絎︿竴鏍鳳細鎺ュ彈涓涓璞″拰涓涓垚鍛樺悕銆傚瀵硅薄瑙e紩鐢ㄤ互鑾峰彇鎴愬憳銆備笉綆″琛ㄥ浣曪紝綆ご鎿嶄綔絎︿笉鎺ュ彈鏄懼紡褰㈠弬銆?br>榪欓噷娌℃湁絎簩涓艦鍙傦紝鍥犱負 -> 鐨勫彸鎿嶄綔鏁頒笉鏄〃杈懼紡錛岀浉鍙嶏紝鏄搴旂潃綾繪垚鍛樼殑涓涓爣璇嗙銆傛病鏈夋槑鏄懼彲琛岀殑閫斿緞灝嗕竴涓爣璇嗙浣滀負褰㈠弬浼犻掔粰鍑芥暟錛岀浉鍙嶏紝鐢辯紪璇戝櫒澶勭悊鑾峰彇鎴愬憳鐨勫伐浣溿?/p>
褰撹繖鏍風紪鍐欐椂錛?br> point->action();
鐢變簬浼樺厛綰ц鍒欙紝瀹冨疄闄呯瓑浠蜂簬緙栧啓錛?br> (point->action)();
鎹㈠彞璇濊錛屾垜浠兂瑕佽皟鐢ㄧ殑鏄 point->action 姹傚肩殑緇撴灉銆傜紪璇戝櫒榪欐牱瀵硅浠g爜榪涜姹傚鹼細
1.濡傛灉 point 鏄竴涓寚閽堬紝鎸囧悜鍏鋒湁鍚嶄負 action 鐨勬垚鍛樼殑綾誨璞★紝鍒欑紪璇戝櫒灝嗕唬鐮佺紪璇戜負璋冪敤璇ュ璞$殑 action 鎴愬憳銆?/p>
2.鍚﹀垯錛屽鏋?point(娉細涓枃鐗堣鍐欎負action) 鏄畾涔変簡 operator-> 鎿嶄綔絎︾殑綾葷殑涓涓璞★紝鍒?point->action 涓?point.operator->()->action 鐩稿悓銆傚嵆錛屾墽琛?point 鐨?operator->()錛岀劧鍚庝嬌鐢ㄨ緇撴灉閲嶅榪欎笁姝ャ?/p>
3.鍚﹀垯錛屼唬鐮佸嚭閿欍?/p>
瀵歸噸杞界澶寸殑榪斿洖鍊肩殑綰︽潫
閲嶈澆綆ご鎿嶄綔絎﹀繀欏昏繑鍥炴寚鍚戠被綾誨瀷鐨勬寚閽堬紝鎴栬呰繑鍥炲畾涔変簡鑷繁鐨勭澶存搷浣滅鐨勭被綾誨瀷瀵硅薄銆?/p>
濡傛灉榪斿洖綾誨瀷鏄寚閽堬紝鍒欏唴緗澶存搷浣滅鍙敤浜庤鎸囬拡錛岀紪璇戝櫒瀵硅鎸囬拡瑙e紩鐢ㄥ茍浠庣粨鏋滃璞¤幏鍙栨寚瀹氭垚鍛樸傚鏋滆鎸囧悜鐨勭被鍨嬫病鏈夊畾涔夐偅涓垚鍛橈紝鍒欑紪璇戝櫒浜х敓涓涓敊璇?br>濡傛灉榪斿洖綾誨瀷鏄被綾誨瀷鐨勫叾浠栧璞★紙鎴栨槸榪欑瀵硅薄鐨勫紩鐢級錛屽垯灝嗛掑綊搴旂敤璇ユ搷浣滅銆傜紪璇戝櫒媯鏌ヨ繑鍥炲璞℃墍灞炵被鍨嬫槸鍚﹀叿鏈夋垚鍛樼澶達紝濡傛灉鏈夛紝灝卞簲鐢ㄩ偅涓搷浣滅錛涘惁鍒欙紝緙栬瘧鍣ㄤ駭鐢熶竴涓敊璇傝繖涓繃紼嬬戶緇笅鍘伙紝鐩村埌榪斿洖涓涓寚鍚戝甫鏈夋寚瀹氭垚鍛樼殑鐨勫璞$殑鎸囬拡錛屾垨鑰呰繑鍥炴煇浜涘叾浠栧鹼紝鍦ㄥ悗涓縐嶆儏鍐典笅錛屼唬鐮佸嚭閿欍?br>----------------------------------------鍗庝附鍒嗗壊綰?---------------------------------------
濡傛灉涓婇潰鍒嗗壊綰夸箣闂寸殑鍐呭鐪嬫噦浜嗭紝涓嬮潰鐨勪篃灝變笉鐢ㄧ湅浜嗗搱銆?br>鏍規嵁鐞嗚В錛屽畾涔変簡3涓被錛孋鍖呭惈B錛孊鍖呭惈A銆侫銆丅銆丆閮藉畾涔変簡涓涓猘ction鐨勬垚鍛樺嚱鏁般侭鍜孋閮介噸杞界澶存搷浣滅錛屼笉鍚岀殑鏄疊鐨勯噸杞界澶存搷浣滅榪斿洖鐨勬槸A綾誨璞$殑鎸囬拡錛岃孋鐨勯噸杞界澶存搷浣滅榪斿洖鐨勬槸B綾誨璞°?br>
涓婇潰浠g爜杈撳嚭緇撴灉鏄細
Action in class C!
Action in class A!
鍏朵腑鐨勪唬鐮?br>C* pc = new C;
pc->action();
杈撳嚭鐨勭粨鏋滄槸
Action in class C!
榪欎釜緇撴灉姣旇緝濂界悊瑙o紝pc鏄被瀵硅薄鎸囬拡錛屾鏃剁殑綆ご鎿嶄綔絎︿嬌鐢ㄧ殑鏄唴緗惈涔夛紝瀵筽c瑙e紩鐢ㄧ劧鍚庤皟鐢ㄥ璞$殑鎴愬憳鍑芥暟action銆?/p>
鑰屼笅闈㈢殑浠g爜
C c;
c->action();
杈撳嚭鐨勭粨鏋滄槸
Action in class A!
鍏跺疄c->action();鐨勫惈涔変笌c.operator->().operator->()->action();鐩稿悓銆?/p>
c鏄璞★紝c鍚庨潰鐨勭澶存搷浣滅浣跨敤鐨勬槸閲嶈澆綆ご鎿嶄綔絎︼紝鍗寵皟鐢ㄧ被C鐨刼perator->()鎴愬憳鍑芥暟銆傛鏃惰繑鍥炵殑鏄被B鐨勫璞★紝鎵浠ヨ皟鐢ㄧ被B鐨刼perator->()鎴愬憳鍑芥暟錛孊鐨刼perator->()榪斿洖鐨勬槸鎸囬拡錛屾墍浠ョ幇鍦ㄥ彲浠ヤ嬌鐢ㄥ唴緗澶存搷浣滅浜嗐傚B鐨刼perator->()榪斿洖鐨勬寚閽堣繘琛岃В寮曠敤錛岀劧鍚庤皟鐢ㄨВ寮曠敤鍚庣殑瀵硅薄鐨勬垚鍛樺嚱鏁癮ction錛屾鏃惰皟鐢ㄧ殑灝辨槸綾籄鐨刟ction()銆傝繖閲屽瓨鍦ㄤ竴涓掑綊璋冪敤operator->()鐨勮繃紼嬶紝鏈鍚庡啀浣跨敤涓嬈″唴緗惈涔夌殑綆ご鎿嶄綔絎︺?br>