Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

c/c++Ç¿ÖÆÀàÐÍת»»

 Q:ʲôÊÇC·ç¸ñת»»£¿Ê²Ã´ÊÇstatic_cast, dynamic_cast ÒÔ¼° reinterpret_cast£¿Çø±ðÊÇʲô£¿ÎªÊ²Ã´Òª×¢Ò⣿
A:ת»»µÄº¬ÒåÊÇͨ¹ý¸Ä±äÒ»¸ö±äÁ¿µÄÀàÐÍΪ±ðµÄÀàÐÍ´Ó¶ø¸Ä±ä¸Ã±äÁ¿µÄ±íʾ·½Ê½¡£ÎªÁËÀàÐÍת»»Ò»¸ö¼òµ¥¶ÔÏóΪÁíÒ»¸ö¶ÔÏóÄã»áʹÓô«Í³µÄÀàÐÍת»»²Ù×÷·û¡£±ÈÈ磬ΪÁËת»»Ò»¸öÀàÐÍΪdouboleµÄ¸¡µãÊýµÄÖ¸Õëµ½ÕûÐÍ£º
´úÂë:
int i;
double d;
i = (int) d;
»òÕߣº
i = int (d);
¶ÔÓÚ¾ßÓбê×¼¶¨Òåת»»µÄ¼òµ¥ÀàÐͶøÑÔ¹¤×÷µÄºÜºÃ¡£È»¶ø£¬ÕâÑùµÄת»»·ûÒ²Äܲ»·ÖÔí°×µÄÓ¦ÓÃÓÚÀࣨclass£©ºÍÀàµÄÖ¸Õë¡£ANSI-C++±ê×¼¶¨ÒåÁËËĸöеÄת»»·û£º'reinterpret_cast', 'static_cast', 'dynamic_cast' ºÍ 'const_cast'£¬Ä¿µÄÔÚÓÚ¿ØÖÆÀà(class)Ö®¼äµÄÀàÐÍת»»¡£
´úÂë:
reinterpret_cast<new_type>(expression)
dynamic_cast<new_type>(expression)
static_cast<new_type>(expression)
const_cast<new_type>(expression)
1 reinterpret_cast
'reinterpret_cast'ת»»Ò»¸öÖ¸ÕëΪÆäËüÀàÐ͵ÄÖ¸Õë¡£ËüÒ²ÔÊÐí´ÓÒ»¸öÖ¸Õëת»»ÎªÕûÊýÀàÐÍ¡£·´Ö®ÒàÈ»¡££¨Òë×¢£ºÊÇÖ¸Õë¾ßÌåµÄµØÖ·Öµ×÷ΪÕûÊýÖµ£¿£©
Õâ¸ö²Ù×÷·ûÄܹ»ÔÚ·ÇÏà¹ØµÄÀàÐÍÖ®¼äת»»¡£²Ù×÷½á¹ûÖ»ÊǼòµ¥µÄ´ÓÒ»¸öÖ¸Õëµ½±ðµÄÖ¸ÕëµÄÖµµÄ¶þ½øÖÆ¿½±´¡£ÔÚÀàÐÍÖ®¼äÖ¸ÏòµÄÄÚÈݲ»×öÈκÎÀàÐ͵ļì²éºÍת»»¡£
Èç¹ûÇé¿öÊÇ´ÓÒ»¸öÖ¸Õëµ½ÕûÐ͵Ŀ½±´£¬ÄÚÈݵĽâÊÍÊÇϵͳÏà¹ØµÄ£¬ËùÒÔÈκεÄʵÏÖ¶¼²»ÊÇ·½±ãµÄ¡£Ò»¸öת»»µ½×ã¹»´óµÄÕûÐÍÄܹ»°üº¬ËüµÄÖ¸ÕëÊÇÄܹ»×ª»»»ØÓÐЧµÄÖ¸ÕëµÄ¡£
´úÂë:
class A {};
class B {};
A * a = new A;
B * b = reinterpret_cast<B *>(a);
'reinterpret_cast'¾ÍÏñ´«Í³µÄÀàÐÍת»»Ò»Ñù¶Ô´ýËùÓÐÖ¸ÕëµÄÀàÐÍת»»¡£
2 static_cast
'static_cast'ÔÊÐíÖ´ÐÐÈÎÒâµÄÒþʽת»»ºÍÏ෴ת»»¶¯×÷¡££¨¼´Ê¹ËüÊDz»ÔÊÐíÒþʽµÄ£©
Ó¦Óõ½ÀàµÄÖ¸ÕëÉÏ£¬Òâ˼ÊÇ˵ËüÔÊÐí×ÓÀàÀàÐ͵ÄÖ¸Õëת»»Îª¸¸ÀàÀàÐ͵ÄÖ¸Õ루ÕâÊÇÒ»¸öÓÐЧµÄÒþʽת»»£©£¬Í¬Ê±£¬Ò²Äܹ»Ö´ÐÐÏà·´¶¯×÷£º×ª»»¸¸ÀàΪËüµÄ×ÓÀà¡£
ÔÚÕâ×îºóÀý×ÓÀ±»×ª»»µÄ¸¸ÀàûÓб»¼ì²éÊÇ·ñÓëÄ¿µÄÀàÐÍÏàÒ»Ö¡£
´úÂ룺
class Base {};
class Derived : public Base {};
Base *a     = new Base;
Derived *b = static_cast<Derived *>(a);
'static_cast'³ýÁ˲Ù×÷ÀàÐÍÖ¸Õ룬ҲÄÜÓÃÓÚÖ´ÐÐÀàÐͶ¨ÒåµÄÏÔʽµÄת»»£¬ÒÔ¼°»ù´¡ÀàÐÍÖ®¼äµÄ±ê׼ת»»:
´úÂë:
double d = 3.14159265;
int     i = static_c


Ïà¹ØÎĵµ£º

C/C++³ÌÐòԱӦƸ³£¼ûÃæÊÔÌâÉîÈëÆÊÎö

ת×Ô£ºhttp://dev.yesky.com/471/2306471.shtml
1.ÒýÑÔ
¡¡¡¡±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº­¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û¡£
¡¡¡¡Ðí¶àÃæÊÔÌâ¿´ËƼòµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄst ......

CºÍC++³ÌÐòԱѧϰÀú³Ì

ÈçºÎѧϰCºÍC++²Å²»Ã£È»£¬²Å²»ÊÇÂÒѧ£¬ÏëÁËһϣ¬ÕâÀï¸ø³öÒ»¸ö×ܵĻظ´¡£
¡¡¡¡Ò»¼ÒÖ®ÑÔ£¬»¶Ó­ÅÄש¹þ¡£
¡¡¡¡1¡¢¿ÉÒÔ¿¼ÂÇÏÈѧϰC.
¡¡¡¡´ó¶àÊýʱºò£¬ÎÒÃÇѧϰÓïÑÔµÄÄ¿µÄ£¬²»ÊÇΪÁ˳ÉΪһ¸öÓïÑÔר¼Ò£¬¶øÊÇÏ£Íû³ÉΪһ¸ö½â¾öÎÊÌâµÄר¼Ò¡£×öÒ»¸öÓÐÓõijÌÐòÔ±£¬×öÒ»¸ö׬ǮµÄ³ÌÐòÔ±¡£ÎÒÃǵļÛÖµ£¬½«ÌåÏÖÔÚ¿Í»§¼ÛÖµÉÏ£¬¶ø²»ÊÇÓï ......

c»ñµÃÎļþ´óС

 1.MFCÖеķ½·¨£º(C++)
CFileStatus status;
CFile::GetStatus("D:\\test.txt",status);
long lSizeOfFile;
lSizeOfFile = status.m_size;
lSizeOfFileµÄÖµ¾ÍÊÇD:\\test.txtÎļþµÄ´óС
2.±ê×¼C»ñµÃÎļþ´óСµÄ5ÖÖ·½·¨
(×¢Ò⣺"__FILE__"Ö¸µÄÊǵ±Ç°Îļþ£¬Äã¿ÉÒÔ¸ÄΪÓÐЧ·¾¶µÄÄ¿±êÎļþ£¬±ÈÈç"D:\\test.txt"£©
#i ......

C/C++Êý×éÃûÓëÖ¸ÕëÇø±ðÉîÈë̽Ë÷

(1)
Êý×éÃûµÄÄÚº­ÔÚÓÚÆäÖ¸´úʵÌåÊÇÒ»ÖÖÊý¾Ý½á¹¹£¬ÕâÖÖÊý¾Ý½á¹¹¾ÍÊÇÊý×飻
(2)
Êý×éÃûµÄÍâÑÓÔÚÓÚÆä¿ÉÒÔת»»ÎªÖ¸ÏòÆäÖ¸´úʵÌåµÄÖ¸Õ룬¶øÇÒÊÇÒ»¸öÖ¸Õë³£Á¿£»
(3)
Ö¸ÏòÊý×éµÄÖ¸ÕëÔòÊÇÁíÍâÒ»ÖÖ±äÁ¿ÀàÐÍ£¨ÔÚWIN32ƽ̨Ï£¬³¤¶ÈΪ4£©£¬½ö½öÒâζ×ÅÊý×éµÄ´æ·ÅµØÖ·
£¨4£©
Êý×éÃû×÷Ϊº¯ÊýÐβÎʱ£¬ÔÚº¯ÊýÌåÄÚ£¬ÆäʧȥÁ˱¾ÉíµÄÄÚº­ ......

C´æ´¢ÀàÐͼ°¾²Ì¬¡¢´æ´¢ÀàÐÍÑó½â

 CµÄËÄÖÖ´æ´¢ÀàÏÞ¶¨·û£º
extern:Íⲿ±äÁ¿
static £º¾²Ì¬
register£º´æ´¢Æ÷
auto£º×Ô¶¯¡¡
¾²Ì¬¾Ö²¿±äÁ¿£º
´æ´¢ÇøºÍÈ«¾Ö±äÁ¿ÊÇÒ»ÑùµÄ¡£¾²Ì¬¾Ö²¿ºÍÈ«¾Ö±äÁ¿¼äµÄÖ÷ÒªÇø±ðÊÇ£º¾²Ì¬¾Ö²¿±äÁ¿½ö¶ÔËüÔÚÆäÖÐÉùÃ÷µÄ¿éÊÇ¿ÉÖªµÄ¡£
¾²Ì¬È«¾Ö±äÁ¿£º
¸æËß±àÒëÆ÷´´½¨Ò»¸ö½öÔÚÉùÃ÷ËüµÄÎļþÖпÉÖªµÄÈ«¾Ö±äÁ¿¡£ÕâÒâζ×Å£º¼´Ê¹±äÁ¿Ê ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ