²é¿´: 3700  |  »Ø¸´: 10
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

baitao-1987

½ð³æ (ÕýʽдÊÖ)

[½»Á÷] ¡¾·ÖÏí¡¿C++³ÌÐòÉè¼Æ×ܽᡪ¡ªÑ§C++µÄÅóÓѶà×¢Ò⣡£¡£¡ ÒÑÓÐ7È˲ÎÓë

C++³ÌÐòÉè¼Æ×ܽᡪ¡ªÑ§C++µÄÅóÓѶà×¢Ò⣡£¡

ÒÔǰÈÏÕæÑ§Ï°¹ýC++£¬µ«ÊÇÒÔºóûÓо­³£Ê¹ÓÃÍüµÃ²î²»¶àÁË£¬ÒÔǰÐí¶àÐèҪעÒâºÍºÃµÄ±à³Ì¾­ÑéÓÉÓÚûÓмDZʼÇÒ²ÍüÍêÁË£¬ÏÖÔÚרÃÅдһƪÀ´×ܽáC++»ù´¡ÖªÊ¶ºÍºÃµÄ±à³Ì¾­Ñé¡£

Ò»¡¢Const£¬Constº¯Êý£¬Const±äÁ¿£¬º¯ÊýºóÃæµÄConst

const ÊÇconstant µÄËõд£¬¡°ºã¶¨²»±ä¡±µÄÒâ˼¡£±»const ÐÞÊεĶ«Î÷¶¼Êܵ½Ç¿ÖƱ£»¤£¬¿ÉÒÔÔ¤·ÀÒâÍâµÄ±ä¶¯£¬ÄÜÌá¸ß³ÌÐòµÄ½¡×³ÐÔ¡£ËùÒԺܶàC++³ÌÐòÉè¼ÆÊé¼®½¨Ò飺¡°Use const whenever you need¡±¡£




1.ÓÃconst ÐÞÊκ¯ÊýµÄ²ÎÊý

Èç¹û²ÎÊý×÷Êä³öÓ㬲»ÂÛËüÊÇʲôÊý¾ÝÀàÐÍ£¬Ò²²»ÂÛËü²ÉÓá°Ö¸Õë´«µÝ¡±»¹ÊÇ¡°ÒýÓô«µÝ¡±£¬¶¼²»ÄܼÓconst ÐÞÊΣ¬·ñÔò¸Ã²ÎÊý½«Ê§È¥Êä³ö¹¦ÄÜ¡£const Ö»ÄÜÐÞÊÎÊäÈë²ÎÊý£º

Èç¹ûÊäÈë²ÎÊý²ÉÓá°Ö¸Õë´«µÝ¡±£¬ÄÇô¼Óconst ÐÞÊοÉÒÔ·ÀÖ¹ÒâÍâµØ¸Ä¶¯¸ÃÖ¸Õ룬Æðµ½±£»¤×÷Óá£

ÀýÈçStringCopy º¯Êý£º

void StringCopy(char *strDestination, const char *strSource);

ÆäÖÐstrSource ÊÇÊäÈë²ÎÊý£¬strDestination ÊÇÊä³ö²ÎÊý¡£¸østrSource ¼ÓÉÏconstÐÞÊκó£¬Èç¹ûº¯ÊýÌåÄÚµÄÓï¾äÊÔͼ¸Ä¶¯strSource µÄÄÚÈÝ£¬±àÒëÆ÷½«Ö¸³ö´íÎó¡£

Èç¹ûÊäÈë²ÎÊý²ÉÓá°Öµ´«µÝ¡±£¬ÓÉÓÚº¯Êý½«×Ô¶¯²úÉúÁÙʱ±äÁ¿ÓÃÓÚ¸´ÖƸòÎÊý£¬¸ÃÊäÈë²ÎÊý±¾À´¾ÍÎÞÐè±£»¤£¬ËùÒÔ²»Òª¼Óconst ÐÞÊΡ£

ÀýÈç²»Òª½«º¯Êývoid Func1(int x) д³Évoid Func1(const int x)¡£Í¬Àí²»Òª½«º¯Êývoid Func2(A a) д³Évoid Func2(const A a)¡£ÆäÖÐA ΪÓû§×Ô¶¨ÒåµÄÊý¾ÝÀàÐÍ¡£

¶ÔÓÚ·ÇÄÚ²¿Êý¾ÝÀàÐ͵IJÎÊý¶øÑÔ£¬Ïóvoid Func(A a) ÕâÑùÉùÃ÷µÄº¯Êý×¢¶¨Ð§ÂʱȽϵס£ÒòΪº¯ÊýÌåÄÚ½«²úÉúA ÀàÐ͵ÄÁÙʱ¶ÔÏóÓÃÓÚ¸´ÖƲÎÊýa£¬¶øÁÙʱ¶ÔÏóµÄ¹¹Ôì¡¢¸´ÖÆ¡¢Îö¹¹¹ý³Ì¶¼½«ÏûºÄʱ¼ä¡£

ΪÁËÌá¸ßЧÂÊ£¬¿ÉÒÔ½«º¯ÊýÉùÃ÷¸ÄΪvoid Func(A &a)£¬ÒòΪ¡°ÒýÓô«µÝ¡±½ö½èÓÃһϲÎÊýµÄ±ðÃû¶øÒÑ£¬²»ÐèÒª²úÉúÁÙʱ¶ÔÏó¡£µ«ÊǺ¯Êývoid Func(A & a) ´æÔÚÒ»¸öȱµã£º

¡°ÒýÓô«µÝ¡±ÓпÉÄܸıä²ÎÊýa£¬ÕâÊÇÎÒÃDz»ÆÚÍûµÄ¡£½â¾öÕâ¸öÎÊÌâºÜÈÝÒ×£¬¼ÓconstÐÞÊμ´¿É£¬Òò´Ëº¯Êý×îÖÕ³ÉΪvoid Func(const A &a)¡£

ÒÔ´ËÀàÍÆ£¬ÊÇ·ñÓ¦½«void Func(int x) ¸ÄдΪvoid Func(const int &x)£¬ÒÔ±ãÌá¸ßЧÂÊ£¿ÍêȫûÓбØÒª£¬ÒòΪÄÚ²¿Êý¾ÝÀàÐ͵IJÎÊý²»´æÔÚ¹¹Ôì¡¢Îö¹¹µÄ¹ý³Ì£¬¶ø¸´ÖÆÒ²·Ç³£¿ì£¬¡°Öµ´«µÝ¡±ºÍ¡°ÒýÓô«µÝ¡±µÄЧÂʼ¸ºõÏ൱¡£

ÎÊÌâÊÇÈç´ËµÄ²øÃ࣬ÎÒÖ»ºÃ½«¡°const &¡±ÐÞÊÎÊäÈë²ÎÊýµÄÓ÷¨×ܽáһϡ£

  

¶ÔÓÚ·ÇÄÚ²¿Êý¾ÝÀàÐ͵ÄÊäÈë²ÎÊý£¬Ó¦¸Ã½«¡°Öµ´«µÝ¡±µÄ·½Ê½¸ÄΪ¡°const ÒýÓô«µÝ¡±£¬Ä¿µÄÊÇÌá¸ßЧÂÊ¡£ÀýÈ罫void Func(A a) ¸ÄΪvoid Func(const A &a)¡£

  

¶ÔÓÚÄÚ²¿Êý¾ÝÀàÐ͵ÄÊäÈë²ÎÊý£¬²»Òª½«¡°Öµ´«µÝ¡±µÄ·½Ê½¸ÄΪ¡°const ÒýÓô«µÝ¡±¡£·ñÔò¼È´ï²»µ½Ìá¸ßЧÂʵÄÄ¿µÄ£¬ÓÖ½µµÍÁ˺¯ÊýµÄ¿ÉÀí½âÐÔ¡£ÀýÈçvoid Func(int x) ²»Ó¦¸Ã¸ÄΪvoid Func(const int &x)¡£




2 .ÓÃconst ÐÞÊκ¯ÊýµÄ·µ»ØÖµ
Èç¹û¸øÒÔ¡°Ö¸Õë´«µÝ¡±·½Ê½µÄº¯Êý·µ»ØÖµ¼Óconst ÐÞÊΣ¬ÄÇôº¯Êý·µ»ØÖµ£¨¼´Ö¸Õ룩µÄÄÚÈݲ»Äܱ»Ð޸ģ¬¸Ã·µ»ØÖµÖ»Äܱ»¸³¸ø¼Óconst ÐÞÊεÄͬÀàÐÍÖ¸Õë¡£ÀýÈ纯Êý
const char * GetString(void);
ÈçÏÂÓï¾ä½«³öÏÖ±àÒë´íÎó£º
char *str = GetString();
ÕýÈ·µÄÓ÷¨ÊÇ
const char *str = GetString();
Èç¹ûº¯Êý·µ»ØÖµ²ÉÓá°Öµ´«µÝ·½Ê½¡±£¬ÓÉÓÚº¯Êý»á°Ñ·µ»ØÖµ¸´ÖƵ½ÍⲿÁÙʱµÄ´æ´¢µ¥ÔªÖУ¬¼Óconst ÐÞÊÎûÓÐÈκμÛÖµ¡£
ÀýÈç²»Òª°Ñº¯Êýint GetInt(void) д³Éconst int GetInt(void)¡£
ͬÀí²»Òª°Ñº¯ÊýA GetA(void) д³Éconst A GetA(void)£¬ÆäÖÐA ΪÓû§×Ô¶¨ÒåµÄÊý¾ÝÀàÐÍ¡£
Èç¹û·µ»ØÖµ²»ÊÇÄÚ²¿Êý¾ÝÀàÐÍ£¬½«º¯ÊýA GetA(void) ¸ÄдΪconst A & GetA(void)µÄÈ·ÄÜÌá¸ßЧÂÊ¡£µ«´ËʱǧÍòǧÍòҪСÐÄ£¬Ò»¶¨Òª¸ãÇå³þº¯Êý¾¿¾¹ÊÇÏë·µ»ØÒ»¸ö¶ÔÏóµÄ¡°¿½±´¡±»¹Êǽö·µ»Ø¡°±ðÃû¡±¾Í¿ÉÒÔÁË£¬·ñÔò³ÌÐò»á³ö´í¡£
º¯Êý·µ»ØÖµ²ÉÓá°ÒýÓô«µÝ¡±µÄ³¡ºÏ²¢²»¶à£¬ÕâÖÖ·½Ê½Ò»°ãÖ»³öÏÖÔÚÀàµÄ¸³Öµº¯ÊýÖУ¬Ä¿µÄÊÇΪÁËʵÏÖÁ´Ê½±í´ï¡£

ÀýÈ磺
class A
{
A & operate = (const A & other); // ¸³Öµº¯Êý
} ;
A a, b, c; // a, b, c ΪA µÄ¶ÔÏó

a = b = c; // Õý³£µÄÁ´Ê½¸³Öµ
(a = b) = c; // ²»Õý³£µÄÁ´Ê½¸³Öµ£¬µ«ºÏ·¨
Èç¹û½«¸³Öµº¯ÊýµÄ·µ»ØÖµ¼Óconst ÐÞÊΣ¬ÄÇô¸Ã·µ»ØÖµµÄÄÚÈݲ»ÔÊÐí±»¸Ä¶¯¡£ÉÏÀýÖУ¬Óï¾ä a = b = c ÈÔÈ»ÕýÈ·£¬µ«ÊÇÓï¾ä (a = b) = c ÔòÊÇ·Ç·¨µÄ¡£




3. const ³ÉÔ±º¯Êý
Èκβ»»áÐÞ¸ÄÊý¾Ý³ÉÔ±(¼´º¯ÊýÖеıäÁ¿)µÄº¯Êý¶¼Ó¦¸ÃÉùÃ÷Ϊconst ÀàÐÍ¡£Èç¹ûÔÚ±àдconst ³ÉÔ±º¯Êýʱ£¬²»É÷ÐÞ¸ÄÁËÊý¾Ý³ÉÔ±£¬»òÕßµ÷ÓÃÁËÆäËü·Çconst ³ÉÔ±º¯Êý£¬±àÒëÆ÷½«Ö¸³ö´íÎó£¬ÕâÎÞÒÉ»áÌá¸ß³ÌÐòµÄ½¡×³ÐÔ¡£ÒÔϳÌÐòÖУ¬Ààstack µÄ³ÉÔ±º¯ÊýGetCount ½öÓÃÓÚ¼ÆÊý£¬´ÓÂß¼­ÉϽ²GetCount Ó¦µ±Îªconst º¯Êý¡£±àÒëÆ÷½«Ö¸³öGetCount º¯ÊýÖеĴíÎó¡£
class Stack
{
public:
void Push(int elem);
int Pop(void);
int GetCount(void) const; // const ³ÉÔ±º¯Êý
private:
int m_num;
int m_data[100];
} ;
int Stack::GetCount(void) const
{
++ m_num; // ±àÒë´íÎ󣬯óͼÐÞ¸ÄÊý¾Ý³ÉÔ±m_num
Pop(); // ±àÒë´íÎ󣬯óͼµ÷Ó÷Çconst º¯Êý
return m_num;
}
const ³ÉÔ±º¯ÊýµÄÉùÃ÷¿´ÆðÀ´¹Ö¹ÖµÄ£ºconst ¹Ø¼ü×ÖÖ»ÄÜ·ÅÔÚº¯ÊýÉùÃ÷µÄβ²¿£¬´ó¸ÅÊÇÒòΪÆäËüµØ·½¶¼ÒѾ­±»Õ¼ÓÃÁË¡£
¹ØÓÚConstº¯ÊýµÄ¼¸µã¹æÔò£º

a. const¶ÔÏóÖ»ÄÜ·ÃÎÊconst³ÉÔ±º¯Êý,¶ø·Çconst¶ÔÏó¿ÉÒÔ·ÃÎÊÈÎÒâµÄ³ÉÔ±º¯Êý,°üÀ¨const³ÉÔ±º¯Êý.
b. const¶ÔÏóµÄ³ÉÔ±ÊDz»¿ÉÐ޸ĵÄ,È»¶øconst¶ÔÏóͨ¹ýÖ¸Õëά»¤µÄ¶ÔÏóÈ´ÊÇ¿ÉÒÔÐ޸ĵÄ.
c. const³ÉÔ±º¯Êý²»¿ÉÒÔÐ޸ĶÔÏóµÄÊý¾Ý,²»¹Ü¶ÔÏóÊÇ·ñ¾ßÓÐconstÐÔÖÊ.ËüÔÚ±àÒëʱ,ÒÔÊÇ·ñÐ޸ijÉÔ±Êý¾ÝΪÒÀ¾Ý,½øÐмì²é.
e. È»¶ø¼ÓÉÏmutableÐÞÊηûµÄÊý¾Ý³ÉÔ±,¶ÔÓÚÈκÎÇé¿öÏÂͨ¹ýÈκÎÊֶζ¼¿ÉÐÞ¸Ä,×ÔÈ»´ËʱµÄcon³ÉÔ±º¯ÊýÊÇ¿ÉÒÔÐÞ¸ÄËüµÄ
»Ø¸´´ËÂ¥
³¤·çÆÆÀË»áÓÐʱ£¬Ö±¹ÒÔÆ·«¼Ã²×º£~
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

suiyuan528

гæ (³õÈëÎÄ̳)

¡ï
Сľ³æ: ½ð±Ò+0.5, ¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
¸öconst¾ÍÓÐÕâô¶àµÄ¹æÔò£¬ËùÒÔC++²»ÊÇÒ»ÃźÃÓïÑÔ£¬²»ÊÇÒ»ÃźÃѧµÄÓïÑÔ£¬µ±È»Ò²²»ÊÇÒ»ÃÅÒªÓõÄÓïÑÔ¡£
9Â¥2016-03-01 16:38:07
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 11 ¸ö»Ø´ð

yalefield

½ð³æ (ÎÄ̳¾«Ó¢)

ÀϺºÒ»Ã¶

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
ÓàÔó³É(½ð±Ò+1):ÔÞ£¡ 2010-07-13 09:03:46
¾­ÄêÀÏÌû´º³±Ó¿
ËÆÔøÏàʶÑà¹éÀ´
2Â¥2010-07-12 23:05:20
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

magic7004

½ð³æ (Ö°Òµ×÷¼Ò)

¡ï
resonant(½ð±Ò+1):¸Ðл²ÎÓë 2010-07-13 17:59:55
Îҵķç¸ñÊÇ´ò¿ªÔ´´úÂëºó£¬Ìæ»»ËùÓеÄconst Ϊ ¿Õ¸ñ£¬ÒÔÃâÂé·³
Á÷Ã¥²»¿ÉÅ£¬¿ÉŵÄÊÇÁ÷Ã¥ÓÐÎÄ»¯£¬ÓÐÎÄ»¯ÓÖBHµÄÁ÷Ã¥ÎÞµÐ~~£¡
3Â¥2010-07-13 13:15:45
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

holmescn

½ð³æ (ÕýʽдÊÖ)

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
resonant(½ð±Ò+1):¸Ðл²ÎÓë 2010-07-13 18:00:03
Ò»¸öconst¾ÍÓÐÕâô¶àµÄ¹æÔò£¬ËùÒÔC++²»ÊÇÒ»ÃźÃÓïÑÔ£¬²»ÊÇÒ»ÃźÃѧµÄÓïÑÔ£¬µ±È»Ò²²»ÊÇÒ»ÃÅÒªÓõÄÓïÑÔ¡£
4Â¥2010-07-13 14:20:01
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[»ù½ðÉêÇë] ûÓÐÈκÎÏûÏ¢-ÊDz»ÊǾÍÁ¹ÁË +9 ͼÀ²Í¼À² 2026-08-24 10/500 2026-08-25 11:59 by ÄϺ£Ð¡¸ç
[»ù½ðÉêÇë] ÈËÆø²»ÐÐÁË +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by ¹Â¶ÀµÄÓ¢ÐÛ6
[»ù½ðÉêÇë] 2026¹ú×ÔÈ»º¯ÆÀ·Ñµ½ÕË +19 ÑòÑü°å 2026-08-21 22/1100 2026-08-25 10:38 by popular289
[»ù½ðÉêÇë] 2026ÄêµÄ¹ú¼ÒÉç¿Æ»ù½ðÏîĿͨѶÆÀÉóµÄйæÔòÓëж¯Ïò¡¢ÐÂÌôÕ½ +5 process2012 2026-08-23 7/350 2026-08-25 09:42 by huixian257
[»ù½ðÉêÇë] ½ñÌì»ù½ð»á³ö½á¹ûÂð£¿20260819 +17 kkkl_v 2026-08-19 18/900 2026-08-25 09:41 by windflowerwy
[»ù½ðÉêÇë] ·¶½øÖоÙÒ»ÎĵÄÖÐÐÄ˼Ïë +7 Ñ׻ƹóëÐ 2026-08-22 8/400 2026-08-25 08:48 by ZJTJZ
[»ù½ðÉêÇë] Èç¹û´Ë¿ÌÄãÕýÔÚΪ¹ú»ù¸Ðµ½½¹ÂÇ£¬²»·ÁÀ´ÌýÌýÕâÊס¶»ù½ðÖ®Íâ¡· +7 scalable 2026-08-24 7/350 2026-08-24 23:01 by anata1209
[»ù½ðÉêÇë] ÄÜ·ñÍ˳ö²ÎÓëµÄÃæÉÏÏîÄ¿½â³ýÏÞÏî +21 koalala 2026-08-24 24/1200 2026-08-24 19:25 by ¼ÒÓëÔ¶·½
[»ù½ðÉêÇë] ½¨Òé»ù½ð·¢²¼Ìáǰ¸ø³öÃ÷È·µÄʱ¼äµã +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[»ù½ðÉêÇë] ½ñÈÕ²»·Å°ñ£¿Íø´«¹ú×ÔȻԤ¼Æ 8 Ô 27 Èտɲé½á¹û +17 ҽѧÀÏÄк¢ 2026-08-20 21/1050 2026-08-24 14:21 by refreshing11
[»ù½ðÉêÇë] ÅóÓÑȦ¿´µ½µÄ +7 wangzilk 2026-08-18 9/450 2026-08-24 10:50 by cmrandy
[»ù½ðÉêÇë] ÈÃÎÒÖÐÒ»¸öÃæÉϰɣ¡ +13 ´óƼ1987 2026-08-20 16/800 2026-08-24 10:23 by ̫ɵÁË
[»ù½ðÉêÇë] ·Å°ñǰµÄ²»µ­¶¨ 20+4 snowwithsea 2026-08-19 17/850 2026-08-24 10:20 by echo8914667
[»ù½ðÉêÇë] ¿ÆÑй¶ùÌ«ÄÑÁË +18 ÎÒ4´ó°×²Ë 2026-08-20 19/950 2026-08-24 09:47 by ¿­¶÷¹ãÊ¢´ß»¯·ÖÎ
[½Ìʦ֮¼Ò] Ìø²ÛºóÔÚÑÐÏîÄ¿Ôõô°ì£¿ +5 ¼òµ¥»¯xn 2026-08-22 10/500 2026-08-23 12:38 by ¼òµ¥»¯xn
[»ù½ðÉêÇë] ½ñÌì·Å°ñÂ𣿠+15 ²¼²¼ºÍÒ»¶þ 2026-08-19 16/800 2026-08-23 09:55 by ÕÅ´ºÉú
[»ù½ðÉêÇë] ʱ¼ä´Á½ñÌ죬20ºÅ±äÁË +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[»ù½ðÉêÇë] ¿´À´½ñÌì²»»á·Å°ñÁË£¿ +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[»ù½ðÉêÇë] Ó¦¸ÃÊÇÏÂÖÜÈý26ÈÕ¹«²¼Á˰ɣ¿ +4 ¹þ¹þ¸ò£¿ 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[»ù½ðÉêÇë] »ù½ð°¡»ù½ð +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û