[C/C++ Digestion] – ÖØÔØ²Ù×÷·û
	
    
    
	
[C/C++ Digestion] – 
ÖØÔØ²Ù×÷·û
×÷Õߣº
Jason Lee @
http://blog.csdn.net/jasonblog
ÈÕÆÚ£º
2010-04-17
 
[1]
ÖØÔØ²Ù×÷·û
ÖØÔØ²Ù×÷·û´Ó´óµÄ·½ÃæÀ´½²¿ÉÒÔ·ÖΪÁ½Àࣺ×îºÃ»ò±ØÐë×÷ΪÀàµÄ³ÉÔ±º¯ÊýµÄ£¬ÒÔ¼°Ïà·´¡£¶ø¾ßÌ嵨½²£¬×îºÃ»ò±ØÐë×÷ΪÀàµÄ³ÉÔ±º¯ÊýµÄÓи³Öµ²Ù×÷·û
( = )
¡¢Ï±ê²Ù×÷·û
( [] ) 
¡¢µ÷ÓòÙ×÷·û
( () )
¡¢³ÉÔ±·ÃÎʼýÍ·²Ù×÷·û
( ->
£¬Ä¿Ç°ÁгöµÄ²Ù×÷·û¶¼±ØÐëΪ³ÉÔ±º¯Êý
 ) 
¡¢ÐǺŽâÒýÓòÙ×÷·û
( * )
¡¢¸´ºÏ¸³Öµ²Ù×÷·û
( +=
µÈ
 )
¡¢×ÔÔö¡¢×Ô¼õ¡£ÆäËüµÄһЩ²Ù×÷·û£¬ÈçËãÊõ²Ù×÷·û¡¢ÏàµÈ²Ù×÷·û¡¢¹ØÏµ²Ù×÷·ûºÍλ²Ù×÷·û£¬×îºÃ¶¨ÒåΪ·Ç³ÉÔ±º¯Êý£¬ÔÚÕâÖÖÇé¿öÏ£¬Í¨³£ÐèÒª½«Æä¶¨ÒåΪÀàµÄÓÑÔªº¯Êý¡£µ±È»£¬»¹ÓÐһЩÊDz»½¨ÒéÖØÔØµÄ²Ù×÷·û£¬È綺ºÅ¡¢È¡µØÖ·ÔËËã·ûºÍÂß¼ÔËËã·ûµÈ¡£
 
[2]
¸³Öµ²Ù×÷·û
¸³Öµ²Ù×÷·û±ØÐëÊÇÀàµÄ³ÉÔ±º¯Êý£¬ÒòΪ±àÒëÆ÷ÐèÒªÖªµÀÀàÊÇ·ñÓи³Öµ²Ù×÷·ûÕâ¸öÐÅÏ¢¡£²¢ÇÒ£¬¸³Öµ²Ù×÷·û±ØÐë·µ»Ø¶Ô
*this
µÄÒýÓã¬Ò²¾ÍÊÇ×ó²Ù×÷Êý
(
¶ÔÏó×ÔÉí
)
µÄÒýÓá£
ͬÑùµÄ£¬¸´ºÏ¸³Öµ²Ù×÷·ûÒ²Ó¦·µ»Ø¶Ô
*this
µÄÒýÓá£
ÈçÏÂÊÇÒ»¶ÎʾÀý´úÂ룺
#include <iostream>
using namespace std;
 
class Demo {
public:
       Demo():val(0){}
       Demo(int t): val(t){}
       Demo(const Demo &demo){ val = demo.val; }
       ~Demo(){}
 
       Demo& operator=(const Demo &demo){
              val = demo.val;
              return *this;
       }
       Demo& operator+=(const Demo &demo){
              val += demo.val;
              return *this;
       }
 
       void showVal(){ cout << val << endl; }
private:
       int val;
};
 
int main(){
       Demo d1 = 2;// Ê×Ïȵ÷ÓýÓÊÜÕûÐͲÎÊýµÄ¹¹Ô캯Êý´´½¨Ò»¸öÁÙʱ¶ÔÏó£¬ÔÙµ÷Óø´Öƹ¹Ô캯Êý
       d1.showVal();
       Demo d2;
       d2 += d1;// ʹÓø´ºÏ¸³Öµ²Ù×÷·û
       d2.showVal();
       return 0;
} 
ͨ³£¶¨ÒåÁ˸³Öµ²Ù×÷·û£¬ÄÇô½Ó×Ŷ¨Ò叴֯¹¹Ô캯ÊýºÍ¸´ºÏ¸³Öµ²Ù×÷·ûÊDZȽϺÏÀíµÄ¡£½Ó×ÅÓÖΪÁËÌåÏÖ¸´Öƹ¹Ô캯ÊýµÄÔËÓã¬Ö±½ÓÔÚʵÀý»¯
d1
µÄʱºòʹÓÃÁË
Demo d1
= 2;
ÕâÑùµÄÓï¾ä£¬¾ÍÀàËÆ
string
str = “hello”;
Ïȵ÷ÓöÔÓ¦²ÎÊýµÄ¹¹Ô캯Êý´´½¨ÁÙʱ¶ÔÏóÔÙµ÷Óø´Öƹ¹Ô캯Êý¡£
 
[3]
ϱê²Ù×÷·û
    
     
	
	
    
    
	Ïà¹ØÎĵµ£º
        
    
    
Ò»¡¢ÌáǰµÄ»°
¡¡¡¡ÒªËµCÓïÑÔºÍLinuxµÄ¹ØÏµ´ó¼ÒÓ¦¸Ã¶¼²»»áİÉú£¬LinuxϵͳÄں˾ÍÊÇÓÃCÓïÑÔ¿ª·¢µÄ£¬ËùÒÔËùÓеÄLinuxϵͳÏÂÃæ ¶¼»áÓÐCµÄ±àÒëµ÷ÊÔ¹¤¾ß£¬²»¹ýÕâЩ¹¤¾ß¶¼ÊÇÃüÁîʽµÄ£¬Õýʽ¿ª·¢µÄ»°»áºÜ²»·½±ã¡£FedoraÔÚ°²×°µÄʱºò¿ÉÒÔÑ¡Ôñ°²×°Fedora Eclipse£¬Õâ¸öIDEºÜÇ¿´ó£¬C£¬C++£¬Java£¬PythonµÈµÈ¶¼Ö§³Ö£¬¶øÇÒ±àÒ룬µ÷ÊÔºÍ ......
	
    
        
    
    
Ò»¡¢ÌáǰµÄ»°
¡¡¡¡ÒªËµCÓïÑÔºÍLinuxµÄ¹ØÏµ´ó¼ÒÓ¦¸Ã¶¼²»»áİÉú£¬LinuxϵͳÄں˾ÍÊÇÓÃCÓïÑÔ¿ª·¢µÄ£¬ËùÒÔËùÓеÄLinuxϵͳÏÂÃæ ¶¼»áÓÐCµÄ±àÒëµ÷ÊÔ¹¤¾ß£¬²»¹ýÕâЩ¹¤¾ß¶¼ÊÇÃüÁîʽµÄ£¬Õýʽ¿ª·¢µÄ»°»áºÜ²»·½±ã¡£FedoraÔÚ°²×°µÄʱºò¿ÉÒÔÑ¡Ôñ°²×°Fedora Eclipse£¬Õâ¸öIDEºÜÇ¿´ó£¬C£¬C++£¬Java£¬PythonµÈµÈ¶¼Ö§³Ö£¬¶øÇÒ±àÒ룬µ÷ÊÔºÍ ......
	
    
        
    
    ×ªÔØÇë×¢Ã÷³ö´¦£º±à³Ì±Ê¼ÇBLOG
¹¤ÓûÉÆÆäÊ£¬±ØÏÈÀûÆäÆ÷¡£ÓÃÁËÕâô¾ÃµÄlinux£¬ÏÖÔڱȽÏÖ÷Á÷µÄ¼¸¸öC/C++µÄIDE»ù±¾ÒѶ¼ÓùýÁË£¬ÏÖÔÚÀ´¶ÔËûÃÇ×öһϼòµ¥µÄ±È½Ï¡£
1¡¢VIM
Ê×ÏÈҪ˵µÄÊÇVIM¡£ÎÒÈÏΪ£¬VIMÖ»ÊÇÒ»¸ö±à¼Æ÷£¬²»ÄÜËãÊÇIDE¡£Ëä˵VIMÓкܶà²å¼þ£¬ÀýÈç´úÂëÕÛµþ¡¢µÝ½øµÈ£¬¿ÉÒÔ½«VIM×齨³É¼¸ºõÀàËÆÒ»¸öIDE£¬µ«Ê¼ÖÕËü²»ÊÇ× ......
	
    
        
    
    Yes£¬ CºÍC++»ìÓõÄÈ·ÊÇnatural£¬±Ï¾¹¾ø´ó¶àÊýC++ѧϰÕß¶¼´ÓCѧÆð£¬C++¼æÈÝC¾ÍÊÇΪÁ˽µµÍѧϰÃż÷¡£µ«ÊÇCºÍC++»ìÓÃÈ´²»Ò»¶¨ÊÇnecessary¡£ ÎÒÃǰÑCºÍC++¹éΪһÀ࣬ͨ³£Ð´×÷C/C++£¬ÄÇÊÇÒòΪ´ÓÓïÑԽǶȽ²CµÄÎÊÌâ¾ÍÊÇC++µÄÎÊÌ⣬µ«ÊÇ·´¹ýÀ´¾Í²»³ÉÁ¢£¬Òò´Ë¾ßÌ嵽ij¸ö¹¤³ÌµÄʱºò£¬ÄãÔÚ¿ª¹¤Ö®Ç°¾Í±ØÐë¾ö¶¨µ½µ×ʹÓÃC»¹ÊÇC++£¬»òÕß˵ ......
	
    
        
    
    extern "C"
Ŀ¼
¸ÅÊö ±àÒ뷽ʽ ϰ¹ßÓ÷¨ 
 
¸ÅÊö
¡¡¡¡extern "C" °üº¬Ë«Öغ¬Ò壬´Ó×ÖÃæÉϼ´¿ÉµÃµ½£ºÊ×ÏÈ£¬±»ËüÐÞÊεÄÄ¿±êÊÇ“extern”µÄ£»Æä´Î£¬±»ËüÐÞÊεÄÄ¿±êÊÇ“C”µÄ¡£ÈÃÎÒÃÇÀ´Ïêϸ½â¶ÁÕâÁ½Öغ¬Òå¡£
¡¡¡¡£¨1£© ±»extern "C"ÏÞ¶¨µÄº¯Êý»ò±äÁ¿ÊÇexternÀàÐ͵Ä
¡¡¡¡externÊÇC/C++ÓïÑÔÖбíÃ÷º¯Ê ......