锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久激五月天综合精品,亚洲无亚洲人成网站77777,国产精品久久久久77777http://m.shnenglu.com/Error/category/19521.htmlzh-cnSat, 23 Jun 2012 13:47:11 GMTSat, 23 Jun 2012 13:47:11 GMT60(杞?boost::implicit_casthttp://m.shnenglu.com/Error/archive/2012/06/23/179905.htmlEnicEnicSat, 23 Jun 2012 13:34:00 GMThttp://m.shnenglu.com/Error/archive/2012/06/23/179905.htmlhttp://m.shnenglu.com/Error/comments/179905.htmlhttp://m.shnenglu.com/Error/archive/2012/06/23/179905.html#Feedback0http://m.shnenglu.com/Error/comments/commentRss/179905.htmlhttp://m.shnenglu.com/Error/services/trackbacks/179905.htmlboost::implicit_cast

鍦╯tackoverflow涓婄湅鍒?a >榪欎釜甯栧瓙, 浜庢槸鍙戠幇浜哹oost::implicit_cast榪欎釜灝忎笢瑗?

鍏堟潵鐪嬬湅榪欐浠g爜:

struct top {};
struct mid_a : top {};
struct mid_b : top {};
struct bottom : mid_a, mid_b {};

void foo(mid_a&) {}
void foo(mid_b&) {}
void bar(bottom &arg) {
    foo(arg); // 鎯寵璋冪敤"void foo(mid_a&)"
}

int main() {
    bottom x;
    bar(x);
    return 0;
}

鏄棤娉曠紪璇戦氳繃鐨? 鍥犱負foo鐨勯噸杞借В鏋愭湁姝т箟. 閭d箞鎶奲ar閲岀殑浠g爜鏀逛竴鏀? 涓轟簡淇濇寔C++椋庢牸, 鎴戜滑浣跨敤static_cast, 鑰屼笉鏄疌椋庢牸鐨勮漿鎹?

foo(static_cast<mid_a&>(arg));

紼嬪簭緙栬瘧閫氳繃浜? 榪愯璧鋒潵涔熸病鏈夐棶棰? 鐒惰?#8230;

涓涓湀浠ュ悗鎴戞妸bar鐨勫弬鏁扮被鍨嬩慨鏀逛簡涓涓?

struct top {};
struct mid_a : top {};
struct mid_b : top {};
struct bottom : mid_a, mid_b {};

void foo(mid_a&) {}
void foo(mid_b&) {}
void bar(top &arg) {
    // ... 榪囦簡涓涓湀, 榪欓噷宸茬粡娣誨姞浜嗗緢澶氫唬鐮?
    foo(static_cast<mid_a&>(arg));
}

int main() {
    top x;
    bar(x);
    return 0;
}

浠g爜渚濇棫緙栬瘧閫氳繃, 鍙槸榪愯鏃剁▼搴忔寕鎺変簡(鍋囪榪欏嚑涓被閲岄潰鏈夎澶氭垚鍛? 騫朵笖鍦╢oo閲屽鍏惰繘琛屼簡璁塊棶).

鍙戠幇闂浜嗗悧? 鍘熷洜灝卞湪浜巗tatic_cast澶己澶т簡, 寮哄ぇ鍒板彲浠ヨ繘琛?#8221;down-cast”. 浜庢槸緙栬瘧鍣ㄦ病鏈夌粰浣犱換浣曡鍛? 灝辨妸涓涓猼op綾誨瀷鐨勫紩鐢ㄧ粰寮哄埗杞崲鎴愪簡min_a鐨勫紩鐢?

榪欎釜鏃跺欒疆鍒癰oost::implicit_cast鍑哄満浜? 鎶奲ar閲岄潰鐨勯偅鍙oo璋冪敤鏀逛竴鏀?

foo(boost::implicit_cast<mid_a&>(arg));

浜庢槸涓涓湀鍓嶇殑浠g爜渚濇棫鍙互閫氳繃緙栬瘧, 鑰屼竴涓湀鍚庣殑浠g爜涓殑閿欒琚紪璇戝櫒鎻嚭鏉ヤ簡. 鍘熷洜鍦ㄤ簬闅愬紡綾誨瀷杞崲涓嶅厑璁?#8221;down-cast”, 鍙兘”up-cast”.

榪欓噷綆瑕佽涓涓嬫墍璋撴樉寮忓拰闅愬紡綾誨瀷杞崲鐨勫尯鍒? 鍦–++涓栫晫鐨勮嫳鏂囬噷, 鎴戜滑璇?#8221;convert”閫氬父鎸?#8221;implicit convert”, 鑰?#8221;cast”鎸?#8221;explicit cast”. 闅愬紡綾誨瀷杞崲濂界悊瑙? 灝辨槸浣犲啓浜嗕釜a=b, 鑰宎b涓嶅悓綾誨瀷, 緙栬瘧鍙堜笉鎶ラ敊, 灝辮鏄庨殣寮忕被鍨嬭漿鎹㈠彂鐢熶簡, 綾諱技鐨勬儏鍐佃繕鏈夊湪鍑芥暟璋冪敤鐨勫弬鏁頒紶閫掓椂. 鑰屾樉寮忕被鍨嬭漿鎹㈢壒鎸嘋椋庢牸鐨勫己鍒惰漿鎹?(type)obj鎴栬匔++涓瓑浠風殑type(obj)), 浠ュ強C++椋庢牸鐨勫洓涓叧閿瓧(static_cast, const_cast, dynamic_cast, reinterpret_cast). 鐒惰岃繖涓畾涔夋槸鐩稿綋妯$硦鐨? 姣斿涓涓猧nt綾誨瀷鐨剎, bool(x)鏄樉寮忕殑, 鑰?!x鏄殣寮忕殑, 鍏跺疄鏁堟灉涓婂茍娌℃湁鍖哄埆, 鍙槸瀛楅潰涓婄殑涓嶅悓緗簡. (鍏充簬cast鍜宑onvert鐨勫尯鍒? 鍙傝榪欓噷鍜?a >榪欓噷)

鎵浠ュ湪bar閲屾垜浠渶瑕佺殑浠呬粎鏄竴涓殣寮忕被鍨嬭漿鎹? 鐒惰岀洿鎺ユ妸arg浼犻掔粰foo鐨勮瘽浼氬嚭鐜伴噸杞芥涔? 浜庢槸鎴戜滑闇瑕佸憡璇夌紪璇戝櫒鍒板簳瑕佽繘琛屽摢涓殣寮忕被鍨嬭漿鎹? 鐒惰宻tatic_cast鍙堝お榪囧己澶? 瀹冭繕鑳藉仛闅愬紡綾誨瀷杞崲涔嬪鐨勪簨鎯?up-cast), 浜庢槸鍦ㄦ棩鍚庝唬鐮佹紨鍖栫殑榪囩▼涓暀涓嬩簡bug.

浜庢槸boost::implicit_cast搴旇繍鑰岀敓, 瀹冩瘮static_cast寮? 姝e瀹冪殑鍚嶅瓧涓鏍? 瀹冨彧鑳界敤鏉ュ憡璇夌紪璇戝櫒鎵ц浠涔堥殣寮忕被鍨嬭漿鎹?

鑰屽畠鐨勪唬鐮佸憿? 綆鍗曞埌浠や漢鍙戞寚:

template <typename T>
inline T implicit_cast (typename mpl::identity<T>::type x) {
    return x;
}

鑰宮pl::identity鐨勫畾涔変篃鏋佸叾綆鍗?

template<typename T> struct identity { typedef T type; };

鏈変漢瑕侀棶榪欎釜identity騫蹭粈涔堢敤鐨? 鐪嬭搗鏉ュ緢绱禈. 濡傛灉娌℃湁榪欎釜identity, 鍍?#8221;implicit_cast(obj)”榪欐牱鐨勪唬鐮佷篃鑳介氳繃緙栬瘧, 鐒惰屽畠鍏跺疄浠涔堜篃娌″仛, obj鐨勭被鍨嬩粛鐒舵病鍙? identity鐨勫瓨鍦ㄤ嬌寰楀嚱鏁版ā鏉跨殑鍙傛暟綾誨瀷鎺ㄥ澶辨晥, 鍥犱負瑕佹帹瀵煎嚭T, 棣栧厛寰楃煡閬搃dentity鏄粈涔? 鑰宨dentity鍙堟槸渚濊禆浜嶵鐨? 浜庢槸灝卞艦鎴愪簡寰幆渚濊禆, 鍙傛暟綾誨瀷鎺ㄥ灝卞け鏁堜簡. 浜庢槸緙栬瘧鍣ㄥ氨瑕佹眰浣犳樉寮忓湴鎸囧畾T鐨勭被鍨?



Enic 2012-06-23 21:34 鍙戣〃璇勮
]]>
国产精品久久久久久搜索| 四虎影视久久久免费观看| 亚洲国产精品高清久久久| 久久综合噜噜激激的五月天| 日韩精品无码久久久久久| 夜夜亚洲天天久久| 亚洲精品成人久久久| 久久精品中文字幕无码绿巨人| 久久99中文字幕久久| 免费一级做a爰片久久毛片潮| 亚洲va久久久噜噜噜久久男同| 国产欧美久久一区二区| 少妇被又大又粗又爽毛片久久黑人| 久久精品国产99国产精品亚洲| 国产女人aaa级久久久级| 久久综合亚洲欧美成人| 久久乐国产精品亚洲综合| 色8久久人人97超碰香蕉987| 久久影视综合亚洲| 99久久精品免费看国产| 久久久婷婷五月亚洲97号色| 精品国产乱码久久久久久人妻| 久久久久国产一级毛片高清板| 久久精品人人做人人爽电影| 久久青青草原精品国产| 亚洲午夜久久久影院伊人| 色综合久久天天综线观看| 狠狠88综合久久久久综合网| 亚洲va中文字幕无码久久| 久久青青草视频| 日产久久强奸免费的看| 色诱久久av| 日日狠狠久久偷偷色综合96蜜桃| 久久精品视屏| 婷婷久久精品国产| 中文字幕无码久久精品青草| 色狠狠久久综合网| 久久久久久久久久久| 亚洲狠狠婷婷综合久久久久| 久久午夜羞羞影院免费观看| 午夜人妻久久久久久久久|