C++ϵͳѧϰ֮ÆߣºÀà
2018-08-26 17:15:32À´Ô´£º²©¿ÍÔ° ÔĶÁ ()
¡¡¡¡ÀàµÄ»ù±¾Ë¼ÏëÊÇÊý¾Ý³éÏóºÍ·â×°¡£
¡¡¡¡Êý¾Ý³éÏóÊÇÒ»ÖÖÒÀÀµÓÚ½Ó¿ÚºÍʵÏÖ·ÖÀëµÄ±à³Ì¼¼Êõ¡£ÀàµÄ½Ó¿Ú°üÀ¨Óû§ËùÄÜÖ´ÐеIJÙ×÷£»ÀàµÄʵÏÖ°üÀ¨ÀàµÄÊý¾Ý³ÉÔ±¡¢¸ºÔð½Ó¿ÚʵÏֵĺ¯ÊýÌåÒÔ¼°¶¨ÒåÀàËùÐèµÄ¸÷ÖÖ˽Óк¯Êý¡£
¡¡¡¡·âװʵÏÖÁËÀàµÄ½Ó¿ÚºÍʵÏֵķÖÀë¡£·â×°ºóµÄÀàÒþ²ØÁËËüµÄʵÏÖϸ½Ú¡£
¡¡¡¡ÀàҪʵÏÖÊý¾Ý³éÏóºÍ·â×°£¬ÐèÒªÊ×Ïȶ¨ÒåÒ»¸ö³éÏóÊý¾ÝÀàÐÍ¡£ÔÚ³éÏóÊý¾ÝÀàÐÍÖУ¬ÓÉÀàµÄÉè¼ÆÕ߸ºÔð¿¼ÂÇÀàµÄʵÏÖ¹ý³Ì£¬Ê¹ÓÃÕßÖ»Ðèµ÷Ó㬶øÎÞÐèÖªµÀÀàÐ͵Ť×÷ϸ½Ú¡£
1¡¢¶¨Òå³éÏóÊý¾ÝÀàÐÍ
¶¨Òå³ÉÔ±º¯Êý
¡¡¡¡³ÉÔ±º¯ÊýµÄÉùÃ÷±ØÐëÔÚÀàµÄÄÚ²¿£¬ËüµÄ¶¨ÒåÔò¼È¿ÉÒÔÔÚÀàµÄÄÚ²¿Ò²¿ÉÒÔÔÚÀàµÄÍⲿ¡£¶¨ÒåÔÚÀàµÄÄÚ²¿µÄº¯ÊýÊÇÒþʽµÄinlineº¯Êý¡£
this
¡¡¡¡³ÉÔ±º¯Êýͨ¹ýÒ»¸öÃûΪthisµÄ¶îÍâµÄÒþʽ²ÎÊýÀ´·ÃÎʵ÷ÓÃËüµÄÄǸö¶ÔÏó¡£µ±µ÷ÓÃÒ»¸ö³ÉÔ±º¯Êýʱ£¬ÓÃÇëÇó¸Ãº¯ÊýµÄ¶ÔÏóµØÖ·³õʼ»¯this¡£
total.isbn();
¡¡¡¡Ôò±àÒëÆ÷¸ºÔð°ÑtotalµÄµØÖ·´«µÝ¸øisbnµÄÒþʽÐβÎthis.
¡¡¡¡ÔÚ³ÉÔ±º¯ÊýÄÚ²¿£¬ÎÒÃÇ¿ÉÒÔÖ±½ÓʹÓõ÷Óøú¯ÊýµÄ¶ÔÏóµÄ³ÉÔ±£¬¶øÎÞÐëͨ¹ý³ÉÔ±·ÃÎÊÔËËã·û¡£
string isbn() const { return this->bookNo; }
const³ÉÔ±º¯Êý
¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬thisµÄÀàÐÍÊÇÖ¸ÏòÀàÀàÐͷdz£Á¿°æ±¾µÄ³£Á¿Ö¸Õë¡£ÀýÈçÔÚSales_data³ÉÔ±º¯ÊýÖУ¬thisµÄÀàÐÍÊÇSales_data *const¡£¾¡¹ÜthisÊdzÉÔ±º¯ÊýµÄÒþʽµÄÐβΣ¬µ«ËüÈÔÈ»ÐèÒª×ñѳõʼ»¯¹æÔò£¬ÎÒÃDz»ÄÜ°Ñthis°ó¶¨µ½Ò»¸ö³£Á¿¶ÔÏóÉÏ¡£ÕâҲʹµÃ²»ÄÜÔÚÒ»¸ö³£Á¿¶ÔÏóÉϵ÷ÓÃÆÕͨµÄ³ÉÔ±º¯Êý¡£
¡¡¡¡Òò´Ë£¬ÎªÁËÌá¸ßº¯ÊýµÄÁé»îÐÔ£¬ÎÒÃÇÒª½«thisÉùÃ÷ΪָÏò³£Á¿µÄÖ¸Õ룬¶øthisÔÚ³ÉÔ±º¯ÊýµÄ²ÎÊýÁбíÖÐÊÇÒþʽµÄ£¬ËùÒÔ¾ÍÔÚ²ÎÊýÁбíµÄºóÃæ¼ÓÉÏconst£¬ÓÃÀ´ËµÃ÷thisÊÇÒ»¸öÖ¸Ïò³£Á¿µÄÖ¸Õë¡£°Ñº¯ÊýºóÃæÓÃconstÐÞÊεijÉÔ±º¯Êý³ÆΪ³£Á¿³ÉÔ±º¯Êý£¬ÔÚ³£Á¿³ÉÔ±º¯ÊýÖв»Äܸıäµ÷ÓÃËüµÄ¶ÔÏóµÄÄÚÈÝ¡£
NOTE£º³£Á¿¶ÔÏó£¬ÒÔ¼°³£Á¿¶ÔÏóµÄÒýÓûòÖ¸Õ붼ֻÄܵ÷Óó£Á¿³ÉÔ±º¯Êý¡£
Àà×÷ÓÃÓòºÍ³ÉÔ±º¯Êý
¡¡¡¡±àÒëÆ÷·ÖÁ½²½´¦ÀíÀࣺÊ×ÏȱàÒë³ÉÔ±µÄÉùÃ÷£¬È»ºó²ÅÂÖµ½³ÉÔ±º¯Êý¡£Òò´Ë£¬³ÉÔ±º¯ÊýÌå¿ÉÒÔËæÒâʹÓÃÀàÖеÄÆäËû³ÉÔ±¶øÎÞÐëÔÚÒâ³öÏֵĴÎÐò¡£
ÔÚÀàµÄÍⲿ¶¨Òå³ÉÔ±º¯Êý
¡¡¡¡ÔÚÀàÍⲿ¶¨Òå³ÉÔ±º¯Êýʱ±ØÐë±£Ö¤·µ»ØÀàÐÍ¡¢²ÎÊýÁбíºÍº¯ÊýÃû¶¼ºÍÀàÄÚÉùÃ÷±£³ÖÒ»Ö£¬¶ÔÓÚÀàÄÚÉùÃ÷Ϊ³£Á¿³ÉÔ±º¯ÊýµÄ£¬ÀàÍⶨÒåʱҲ±ØÐëÔÚ²ÎÊýÁбíºóÃ÷È·Ö¸¶¨constÊôÐÔ¡£Í¬Ê±£¬ÀàÍⲿ¶¨ÒåµÄ³ÉÔ±µÄÃû×Ö±ØÐë°üº¬ËüËùÊôµÄÀàÃû¡£
1.3 ¶¨ÒåÀàÏà¹ØµÄ·Ç³ÉÔ±º¯Êý
¡¡¡¡Ààͨ³£ÐèÒª¶¨ÒåһЩ¸¨Öúº¯Êý£¬±ÈÈçread,printµÈ£¬¾¡¹ÜÕâЩº¯Êý¶¨ÒåµÄ²Ù×÷´Ó¸ÅÄîÉÏÀ´ËµÊôÓÚÀàµÄ½Ó¿ÚµÄ×é³É²¿·Ö£¬µ«ËüÃÇʵ¼ÊÉϲ¢²»ÊôÓÚÀà±¾Éí¡£
¡¡¡¡¶Ô¸¨Öúº¯ÊýµÄ¶¨Ò壬ͨ³£Ò²Êǽ«º¯ÊýµÄÉùÃ÷ºÍ¶¨Òå·ÖÀ뿪À´¡£Èç¹ûº¯ÊýÔÚ¸ÅÄîÉÏÊôÓÚÀ൫ÊDz»¶¨ÒåÔÚÀàÖУ¬ÔòËüÒ»°ãÓ¦ÓëÀàÉùÃ÷£¨¶ø·Ç¶¨Ò壩ÔÚͬһ¸öÍ·ÎļþÄÚ¡£
1.4 ¹¹Ô캯Êý
¡¡¡¡¹¹Ô캯ÊýµÄÈÎÎñÊdzõʼ»¯Àà¶ÔÏóµÄÊý¾Ý³ÉÔ±£¬ÎÞÂÛºÎʱֻҪÀàµÄ¶ÔÏó±»´´½¨£¬¾Í»áÖ´Ðй¹Ô캯Êý¡£
¡¡¡¡¹¹Ô캯ÊýµÄÃû×ÖºÍÀàÃûÏàͬ£¬Ã»Óзµ»ØÀàÐÍ£¬ÆäËûºÍÆäËûº¯ÊýÒ»Ñù¡£Àà¿ÉÒÔ°üº¬¶à¸ö¹¹Ô캯Êý£¬ºÍÆäËûÖØÔغ¯Êý²î²»¶à¡£
¡¡¡¡¹¹Ô캯ÊýÒòΪÆä½ÇÉ«¼ÈÊdzõʼ»¯Àà¶ÔÏó£¬Òò´Ë²»ÄÜÉùÃ÷Ϊconst¡£
ºÏ³ÉµÄĬÈϹ¹Ô캯Êý
¡¡¡¡Ààͨ¹ýÒ»¸öÌØÊâµÄ¹¹Ô캯ÊýÀ´¿ØÖÆĬÈϳõʼ»¯¹ý³Ì£¬Õâ¸öº¯Êý½Ð×öĬÈϹ¹Ô캯Êý¡£Ä¬ÈϹ¹Ô캯ÊýÎÞÐëÈκÎʵ²Î¡£
¡¡¡¡Èç¹ûÎÒÃÇûÓÐÏÔʽµØ¶¨Òå¹¹Ô캯Êý£¬ÄÇô±àÒëÆ÷¾Í»áΪÎÒÃÇÒþʽµØ¶¨ÒåÒ»¸öĬÈϹ¹Ô캯Êý¡£Èç¹ûÎÒÃÇÏÔʽµØ¶¨ÒåÁ˹¹Ô캯Êý£¬±àÒëÆ÷½«²»»áΪÀàÉú³ÉĬÈϹ¹Ô캯Êý£¬ËùÒÔ´Ëʱ±ØÐë×Ô¼º¶¨ÒåÒ»¸öĬÈϹ¹Ô캯Êý¡£
NOTE£ºÖ»Óе±ÀàûÓÐÉùÃ÷Èκι¹Ô캯Êý£¬±àÒëÆ÷²Å»á×Ô¶¯µØÉú³ÉĬÈϹ¹Ô캯Êý¡£
ijЩÀ಻ÄÜÒÀÀµÓںϳɵÄĬÈϹ¹Ô캯Êý
¡¡¡¡ºÏ³ÉµÄĬÈϹ¹Ô캯ÊýÖ»ÊʺϷdz£¼òµ¥µÄÀ࣬¶ÔÓÚÒ»¸öÆÕͨµÄÀàÀ´Ëµ£¬±ØÐ붨ÒåËü×Ô¼ºµÄĬÈϹ¹Ô캯Êý¡£
- ÒѾ¶¨ÒåÁËһЩÆäËûµÄ¹¹Ô캯Êý£¬ÄÇô±ØÐ붨ÒåĬÈϵĹ¹Ô캯Êý
- º¬ÓÐÄÚÖÃÀàÐÍ»ò¸´ºÏÀàÐͳÉÔ±µÄÀàÓ¦¸ÃÔÚÀàµÄÄÚ²¿³õʼ»¯ÕâЩ³ÉÔ±£¬»òÕ߶¨ÒåÒ»¸ö×Ô¼ºµÄĬÈϹ¹Ô캯Êý£¬·ñÔò£¬ÔÚ´´½¨ÀàµÄ¶ÔÏóʱ¾Í¿ÉÄܵõ½Î´¶¨ÒåµÄÖµ¡£ÒòΪ¶¨ÒåÔÚ¿éÖеÄÄÚÖÃÀàÐÍ»ò¸´ºÏÀàÐ͵ĶÔÏó±»Ä¬Èϳõʼ»¯£¬ÔòËüÃǵÄÖµÊÇ䶨ÒåµÄ
- ÓеÄʱºò±àÒëÆ÷²»ÄÜΪijЩÀàºÏ³ÉĬÈϵĹ¹Ô캯Êý
struct Sales_data{ Sales_data() = default; Sales_data(const string &s) :bookNo(s){} Sales_data(const string &s, unsigned n, double p) :bookNo(s), units_sold(n), revenue(p*n){} Sales_data(istream &); string isbn() const { return bookNo; } Sales_data& combine(const Sales_data&); double avg_price() const; string bookNo; unsigned units_sold = 0; double revenue = 0.0; };
=default
¡¡¡¡¿ÉÒÔͨ¹ýÔÚ²ÎÊýÁбíºóÃæдÉÏ=defaultÀ´ÒªÇó±àÒëÆ÷Éú³É¹¹Ô캯Êý¡£ÆäÖÐ=default¼È¿ÉÒÔÉùÃ÷Ò»Æð³öÏÖÔÚÀàµÄÄÚ²¿£¬Ò²¿ÉÒÔ×÷Ϊ¶¨Òå³öÏÖÔÚÀàµÄÍⲿ¡£Èç¹û=defaultÔÚÀàµÄÄÚ²¿£¬ÔòĬÈϹ¹Ô캯ÊýÊÇÄÚÁªµÄ£¬Èç¹ûÔÚÀàµÄÍⲿ£¬Ôò¸Ã³ÉԱĬÈÏÇé¿öϲ»ÊÇÄÚÁªµÄ¡£
¹¹Ô캯Êý³õʼ»¯Áбí
Sales_data(const string &s) :bookNo(s){} Sales_data(const string &s, unsigned n, double p) :bookNo(s), units_sold(n), revenue(p*n){}
¡¡¡¡Ã°ºÅÓ뻨À¨ºÅÖ®¼äµÄ²¿·Ö³ÆΪ¹¹Ô캯Êý³õʼֵÁÐ±í¡£Ëü¸ºÔðΪд´½¨µÄ¶ÔÏóµÄÒ»¸ö»ò¼¸¸öÊý¾Ý³ÉÔ±¸³³õÖµ¡£¹¹Ô캯Êý³õʼֵÊdzÉÔ±Ãû×ÖµÄÒ»¸öÁÐ±í£¬Ã¿¸öÃû×ÖºóÃæ½ô¸úÀ¨ºÅÀ¨ÆðÀ´£¨»òÕßÔÚ»¨À¨ºÅÄڵģ©³ÉÔ±³õʼֵ¡£²»Í¬³ÉÔ±µÄ³õʼ»¯Í¨¹ý¶ººÅ·Ö¸ô¿ªÀ´¡£
¡¡¡¡µ±Ä³¸öÊý¾Ý³ÉÔ±±»¹¹Ô캯Êý³õʼֵÁбíºöÂÔʱ£¬Ëü½«ÒÔÓëºÏ³ÉĬÈϹ¹Ô캯ÊýÏàͬµÄ·½Ê½Òþʽ³õʼ»¯¡£
NOTE£º¹¹Ô캯Êý²»Ó¦¸ÃÇáÒ׸²¸ÇµôÀàÄڵijõʼֵ£¬³ý·Çи³µÄÖµÓëÔÖµ²»Í¬¡£Èç¹ûÄã²»ÄÜʹÓÃÀàÄÚ³õʼֵ£¬ÔòËùÓй¹Ô캯Êý¶¼Ó¦¸ÃÏÔʽµØ³õʼ»¯Ã¿¸öÄÚÖÃÀàÐ͵ijÉÔ±¡£
ÔÚÀàµÄÍⲿ¶¨Òå¹¹Ô캯Êý
1.5 ¿½±´¡¢¸³ÖµºÍÎö¹¹
¡¡¡¡³ýÁ˶¨ÒåÀàµÄ¶ÔÏóÈçºÎ³õʼ»¯Ö®Í⣬À໹ÐèÒª¿ØÖÆ¿½±´¡¢¸³ÖµºÍÏú»Ù¶ÔÏóʱ·¢ÉúµÄÐÐΪ¡£
¡¡¡¡Èç¹ûÎÒÃDz»Ö÷¶¯¶¨ÒåÕâЩ²Ù×÷£¬Ôò±àÒëÆ÷½«ÌæÎÒÃǺϳÉËüÃÇ¡£Ò»°ãÀ´Ëµ£¬±àÒëÆ÷Éú³ÉµÄ°æ±¾½«¶Ô¶ÔÏóµÄÿ¸ö³ÉÔ±Ö´Ðп½±´¡¢¸³ÖµºÍÏú»Ù²Ù×÷¡£
2¡¢·ÃÎÊ¿ØÖÆÓë·â×°
¡¡¡¡ÔÚC++ÖУ¬Ê¹Ó÷ÃÎÊ˵Ã÷·û¼ÓÇ¿ÀàµÄ·â×°ÐÔ£º
- ¶¨ÒåÔÚpublic˵Ã÷·ûÖ®ºóµÄ³ÉÔ±ÔÚÕû¸ö³ÌÐòÄڿɱ»·ÃÎÊ£¬public³ÉÔ±¶¨ÒåÀàµÄ½Ó¿Ú¡£
- ¶¨ÒåÔÚprivate˵Ã÷·ûÖ®ºóµÄ³ÉÔ±¿ÉÒÔ±»ÀàµÄ³ÉÔ±º¯Êý·ÃÎÊ£¬µ«ÊDz»Äܱ»Ê¹ÓøÃÀàµÄ´úÂë·ÃÎÊ£¬private²¿·Ö·â×°ÁËÀàµÄʵÏÖϸ½Ú
classºÍstruct¹Ø¼ü×Ö
¡¡¡¡¶þÕßΨһµÄÇø±ðÊÇ£ºÄ¬ÈÏ·ÃÎÊȨÏÞ²»Ò»Ñù£¬structµÄĬÈÏȨÏÞÊÇpublic£¬¶øclassµÄĬÈÏȨÏÞÊÇprivate¡£
2.1 ÓÑÔª
¡¡¡¡Àà¿ÉÒÔÔÊÐíÆäËûÀà»òÕߺ¯Êý·ÃÎÊËüµÄ·Ç¹«ÓгÉÔ±£¬·½·¨ÊÇÁîÆäËûÀà»òº¯Êý³ÆΪËüµÄÓÑÔª¡£
¡¡¡¡Èç¹ûÀàÏë°ÑÒ»¸öº¯Êý×÷ΪËüµÄÓÑÔª£¬Ö»ÐèÒªÔö¼ÓÒ»ÌõÒÔfriend¹Ø¼ü×Ö¿ªÊ¼µÄº¯ÊýÉùÃ÷Óï¾ä¼´¿É¡£
¡¡¡¡À໹¿ÉÒÔ°ÑÆäËûµÄÀඨÒå³ÉÓÑÔª£¬Ò²¿ÉÒÔ°ÑÆäËûÀàµÄ³ÉÔ±º¯Êý¶¨Òå³ÉÓÑÔª¡£
¡¡¡¡ÓÑÔªº¯ÊýÄܶ¨ÒåÔÚÀàµÄÄÚ²¿£¬ÕâÑùµÄº¯ÊýÊÇÒþʽÄÚÁªµÄ¡£
class Sales_data{
friend Sales_data add(); //ÓÑÔªº¯Êý
public: Sales_data() = default; Sales_data(const string &s) :bookNo(s){} Sales_data(const string &s, unsigned n, double p) :bookNo(s), units_sold(n), revenue(p*n){} Sales_data(istream &); string isbn() const { return bookNo; } Sales_data& combine(const Sales_data&); private: double avg_price() const; string bookNo; unsigned units_sold = 0; double revenue = 0.0; };
NOTE£ºÓÑÔªÉùÃ÷Ö»ÄܳöÏÖÔÚÀඨÒåµÄÄÚ²¿£¬µ«ÊÇÔÚÀàÄÚ³öÏֵľßÌåλÖò»ÏÞ¡£ÓÑÔª²»ÊÇÀàµÄ³ÉÔ±Ò²²»ÊÜËüËùÔÚÇøÓò·ÃÎÊ¿ØÖƼ¶±ðµÄÔ¼Êø¡£
¡¡¡¡¡¡¡¡Ò»°ãÔÚÀඨÒ忪ʼ»ò½áÊøÇ°µÄλÖü¯ÖÐÉùÃ÷ÓÑÔª¡£
ÓÑÔªÉùÃ÷
¡¡¡¡ÓÑÔªµÄÉùÃ÷½ö½öÖ¸¶¨ÁË·ÃÎʵÄȨÏÞ£¬¶ø·ÇÒ»¸öͨ³£ÒâÒåÉϵĺ¯ÊýÉùÃ÷¡£Èç¹ûÏ£ÍûÀàµÄÓû§Äܹ»µ÷ÓÃij¸öÓÑÔªº¯Êý£¬ÄÇô¾Í±ØÐëÔÚÓÑÔªÉùÃ÷Ö®ÍâÔÙרÃŶԺ¯Êý½øÐÐÒ»´ÎÉùÃ÷¡£
¡¡¡¡ÎªÁËʹÓÑÔª¶ÔÀàµÄÓû§¿É¼û£¬Í¨³£°ÑÓÑÔªµÄÉùÃ÷ÓëÀà±¾Éí·ÅÖÃÔÚͬһ¸öÍ·ÎļþÖУ¨ÀàµÄÍⲿ£©¡£ÎÒÃǵÄSales_dataÍ·ÎļþÖÐÓ¦¸ÃΪread¡¢printºÍaddÌṩ¶ÀÁ¢µÄÉùÃ÷£¨³ýÁËÀàÄÚ²¿µÄÓÑÔªÉùÃ÷Ö®Í⣩¡£
ÀàÖ®¼äµÄÓÑÔª¹Øϵ
¡¡¡¡´°¿Ú¹ÜÀíµÄÀàWindow_mgrµÄijЩ³ÉÔ±¿ÉÄÜÐèÒª·ÃÎÊËü¹ÜÀíµÄScreenÀàµÄÄÚ²¿Êý¾Ý£¬ÀýÈ磬Window_mgrµÄ³ÉÔ±º¯ÊýclearÐèÒªÇåÀíÆäËù¹ÜÀíµÄÆäÖÐij¸öÆÁÄ»µÄÄÚÈÝ£¬ÕâʱºòclearÐèÒªÄܹ»·ÃÎÊScreenµÄ˽ÓгÉÔ±£¬ËùÒÔÐèÒªÔÚScreenÀàÖн«Window_mgrÀàÖ¸¶¨³ÉÆäÓÑÔª¡£
class Screen { friend class Window_mgr; };
Èç¹ûÒ»¸öÀàÖ¸¶¨ÁËÓÑÔªÀ࣬ÔòÓÑÔªÀàµÄ³ÉÔ±º¯Êý¿ÉÒÔ·ÃÎʸÃÀà°üÀ¨·Ç¹«ÓгÉÔ±ÔÚÄÚµÄËùÓгÉÔ±¡£Òò´Ë£¬Window_mgrµÄclearµÄº¯Êý¿ÉÒÔ¶¨Òå³É
void Window_mgr::clear(Screen &s) { s.content=string(s.height*s.width,' '); }
ÉÏÊö£¬ÔÚWindow_mgrµÄ³ÉÔ±º¯Êýclear¿ÉÒÔ·ÃÎÊScreenµÄ˽ÓÐÊý¾Ý³ÉÔ±¡£
NOTE£ºÓÑÔª¹Øϵ²»´æÔÚ´«µÝÐÔ£¬Èç¹ûWindow_mgrÀàÓÐÆäËûÓÑÔª£¬ÔòÕâЩÓÑÔª²¢²»ÄÜÀíËùµ±È»µØ¾ßÓзÃÎÊScreenµÄÌØȨ¡£
¡¡¡¡¡¡¡¡Ã¿¸öÀฺÔð¿ØÖÆ×Ô¼ºµÄÓÑÔªÀà»òÓÑÔªº¯Êý¡£
Áî³ÉÔ±º¯Êý×÷ΪÓÑÔª
¡¡¡¡³ýÁ˽«Õû¸öWindow_mgrÀà×÷ΪÓÑÔªÖ®Í⣬Screen»¹¿ÉÒÔֻΪclearÌṩ·ÃÎÊÌØȨ¡£
¡¡¡¡µ±°ÑÒ»¸ö³ÉÔ±º¯ÊýÉùÃ÷³ÉÓÑԪʱ£¬±ØÐëÃ÷È·Ö¸³ö¸Ã³ÉÔ±º¯ÊýÊôÓÚÄĸöÀࣻ
class Screen { friend void Window_mgr::clear(Screen &s); };
º¯ÊýÖØÔغÍÓÑÔª
¡¡¡¡Èç¹ûÏë°Ñ¼¸¸öÖØÔغ¯ÊýÖеÄij¸öÉùÃ÷³ÉÓÑÔª£¬Ö±½Ó½«¸Ãº¯ÊýÔÚÀàÖнøÐÐÓÑÔªÉùÃ÷¼´¿É£¬Ö»ÓÐÉùÃ÷Á˵ĺ¯Êý²ÅÄÜ·ÃÎÊÀàµÄËùÓÐÊý¾Ý³ÉÔ±¡£
ÓÑÔªÉùÃ÷ºÍ×÷ÓÃÓò
¡¡¡¡ÓÑÔªµÄÉùÃ÷²»ÊÇÕæÕýÒâÒåÉϵÄÉùÃ÷£¬Èç¹ûҪʹÓÃËü»¹±ØÐë¼ÓÉÏËüÕæÕýÒâÒåÉϵĺ¯ÊýÉùÃ÷²ÅÄÜʹÓá£
3¡¢ÀàµÄÆäËûÌØÐÔ
3.1 Àà³ÉÔ±
¶¨ÒåÒ»¸öÀàÐͳÉÔ±
¡¡¡¡³ýÁ˶¨ÒåÊý¾ÝºÍº¯Êý³ÉÔ±Ö®Í⣬À໹¿ÉÒÔ×Ô¶¨ÒåijÖÖÀàÐÍÔÚÀàÖеıðÃû¡£ÓÉÀඨÒåµÄÀàÐÍÃû×ÖºÍÆäËû³ÉÔ±Ò»Ñù´æÔÚ·ÃÎÊÏÞÖÆ£¬¿ÉÒÔÊÇpublic»òÕßprivateÖеÄÒ»ÖÖ¡£
class Screen { public: using pos = std::string::size_type; private: pos curser = 0; pos height = 0, width = 0; std::string content; };
NOTE£ºÀàÐͳÉԱͨ³£³öÏÖÔÚÀ࿪ʼµÄµØ·½¡£
ScreenÀàµÄ³ÉÔ±º¯Êý
class Screen { public: using pos = std::string::size_type; Screen() = default; //ÒòΪScreenÓÐÁíÒ»¸ö¹¹Ô캯Êý£¬ //ËùÒÔ±¾º¯ÊýÊDZØÐëµÄ Screen(pos ht, pos wd, char c) :height(ht), width(wd), content(ht*wd, c){} char get() const { return content[cursor]; } inline char get(pos ht, pos wd) const; Screen &move(pos r, pos c); private: pos curser = 0; pos height = 0, width = 0; std::string content; };
Áî³ÉÔ±×÷ΪÄÚÁªº¯Êý
¡¡¡¡¶¨ÒåÔÚÀàÄÚ²¿µÄ³ÉÔ±º¯Êý¶¼ÊÇ×Ô¶¯inlineµÄ£¬ÉÏÊöScreenµÄ¹¹Ô캯ÊýºÍgetº¯ÊýĬÈÏÊÇinlineº¯Êý¡£
¡¡¡¡¿ÉÒÔÔÚÀàµÄÄÚ²¿°Ñinline×÷ΪÉùÃ÷µÄÒ»²¿·ÖÏÔʽµØÉùÃ÷³ÉÔ±º¯Êý£¬Í¬ÑùµÄ£¬Ò²ÄÜÔÚÀàµÄÍⲿÓÃinline¹Ø¼ü×ÖÐÞÊκ¯ÊýµÄ¶¨Òå¡£
#include"2.h" inline char Screen::get(pos r, pos c) const { pos row = r*width; return content[row + c]; }
ËäÈ»ÎÞÐëÔÚÉùÃ÷ºÍ¶¨ÒåµÄµØ·½Í¬Ê±ËµÃ÷inline£¬µ«Õâô×öÊǺϷ¨µÄ¡£²»¹ý£¬×îºÃÖ»ÔÚÀàÍⲿ¶¨ÒåµÄµØ·½ËµÃ÷inline£¬ÕâÑù¿ÉÒÔʹÀà¸üÈÝÒ×Àí½â¡£
ÖØÔسÉÔ±º¯Êý
¡¡¡¡³ÉÔ±º¯ÊýÒ²¿ÉÒÔ±»ÖØÔØ¡£
¿É±äÊý¾Ý³ÉÔ±
¡¡¡¡ÓÐʱϣÍûÄÜÐÞ¸ÄÀàµÄij¸öÊý¾Ý³ÉÔ±£¬¼´Ê¹ÊÇÔÚÒ»¸öconst³ÉÔ±º¯ÊýÄÚ£¬ÄÇô¿ÉÒÔͨ¹ýÔÚ±äÁ¿µÄÉùÃ÷ÖмÓÈëmutable¹Ø¼ü×Ö¡£
¡¡¡¡Ò»¸ö¿É±äÊý¾Ý³ÉÔ±ÓÀÔ¶²»»áÊÇconst£¬¼´Ê¹ËüÊÇconst¶ÔÏóµÄ³ÉÔ±¡£Òò´Ë£¬Ò»¸öconst³ÉÔ±º¯Êý¿ÉÒԸıäÒ»¸ö¿É±ä³ÉÔ±µÄÖµ¡£ÀýÈç¿ÉÒÔ¸øScreenÌí¼ÓÒ»¸ö¿É±ä³ÉÔ±£¬¼Ç¼³ÉÔ±º¯Êý±»µ÷ÓõĴÎÊý¡£
private: pos curser = 0; pos height = 0, width = 0; std::string content; mutable size_t access_cnt; ============================ #include"2.h" inline char Screen::get(pos r, pos c) const { ++access_cnt; pos row = r*width; return content[row + c]; }
ÀàÊý¾Ý³ÉÔ±µÄ³õʼֵ
¡¡¡¡ÀàÄÚ³õʼֵ±ØÐëʹÓÃ=µÄ³õʼ»¯ÐÎʽ»òÕß»¨À¨ºÅÀ¨ÆðÀ´µÄÖ±½Ó³õʼ»¯ÐÎʽ¡£
3.2 ·µ»Ø*thisµÄ³ÉÔ±º¯Êý
¡¡¡¡·µ»Ø*this¿ÉÒ԰Ѻ¯ÊýǶÈëµ½Ò»×鶯×÷ÐòÁÐÖС£
myScreen.move(4,0).set('#');
´Óconst³ÉÔ±º¯Êý·µ»Ø*this
¡¡¡¡Ò»¸öconst³ÉÔ±º¯ÊýÈç¹ûÒÔÒýÓõÄÐÎʽ·µ»Ø*this£¬ÄÇôËüµÄ·µ»ØÀàÐͽ«Êdz£Á¿ÒýÓ㬲»Äܽ«ÆäǶÈëµ½Ò»×鶯×÷ÐòÁÐÖС£
»ùÓÚconstµÄÖØÔØ
¡¡¡¡¶ÔÓڷdz£Á¿³ÉÔ±º¯ÊýºÍ³£Á¿³ÉÔ±º¯ÊýµÄÖØÔØ£¬¸ù¾Ý¶ÔÏóÊÇ·ñÊÇconstÀ´¾ö¶¨µ÷ÓÃÄĸö³ÉÔ±º¯Êý¡£
3.3 ÀàÀàÐÍ
¡¡¡¡Ã¿¸öÀඨÒåÁËΨһµÄÀàÐÍ¡£¶ÔÓÚÁ½¸öÀàÀ´Ëµ£¬¼´Ê¹ËüÃǵijÉÔ±ÍêÈ«Ò»Ñù£¬ÕâÁ½¸öÀàÒ²ÊÇÁ½¸ö²»Í¬µÄÀàÐÍ¡£
ÀàµÄÉùÃ÷
¡¡¡¡¿ÉÒÔ½öÉùÃ÷¶øÔÝʱ²»¶¨ÒåËü¡£ÕâÖÖÉùÃ÷±»³Æ×÷Ç°ÏòÉùÃ÷¡£µ«¶ÔÓÚÒ»¸öÀàÀ´Ëµ£¬ÔÚ´´½¨ËüÃǵĶÔÏó֮ǰ¸ÃÀà±ØÐë±»¶¨Òå¹ý£¬¶ø²»Äܽö½öÉùÃ÷Ëü£¬ÒòΪ±àÒëÆ÷ÐèÒªÖªµÀÀàµÄ¶ÔÏóÐèÒª¶à´óµÄ´æ´¢¿Õ¼ä¡£
4¡¢ÀàµÄ×÷ÓÃÓò
×÷ÓÃÓòºÍ¶¨ÒåÔÚÀàÍⲿµÄ³ÉÔ±
¡¡¡¡Ò»µ©Óöµ½ÀàÃû£¬¶¨ÒåµÄÊ£Óಿ·Ö¾ÍÔÚÀàµÄ×÷ÓÃÓòÖ®ÄÚÁË£¬ÕâÀïµÄÊ£Óಿ·Ö°üÀ¨²ÎÊýÁбíºÍº¯ÊýÌå¡£¾È¹ý¾ÍÊÇ£¬¿ÉÒÔÖ±½ÓʹÓÃÀàµÄÆäËû³ÉÔ±¶øÎÞÐëÔÙ´ÎÊÚȨ¡£
void Window_mgr::clear(ScreenIndex i) { Screen &s=screens[i]; s.contents=string(s.height*s.width,' '); }
¡¡¡¡ÉÏÊöWindow_mgr::ÒѾÃ÷ȷ˵Ã÷Á˺óÐø²¿·Ö´¦ÓÚWindow_mgr×÷ÓÃÓòÖÐÁË£¬Òò´ËʹÓÃWindow_mgrµÄ³ÉÔ±ScreenIndexÒÔ¼°screens¾Í²»ÐèҪ˵Ã÷Window_mgrµÄ×÷ÓÃÓòÁË£¬µ«ÊÇÔÚWindow_mgr::×÷ÓÃÓò֮ǰµÄº¯Êý·µ»ØÀàÐͲ¿·Ö¾Í²»ÔÚWindow_mgr×÷ÓÃÓòÄÚ£¬Òò´ËÈç¹ûº¯Êý·µ»ØÀàÐͲ¿·ÖÐèÒªÓõ½Window_mgrÖеijÉÔ±£¬±ØÐë¶Ô¸Ã³ÉÔ±¼ÓÒÔÃüÃû¿Õ¼ä˵Ã÷¡£
//¼ÙÉè·µ»ØÀàÐÍÊÇScreenIndexÔò£¬ÀàÍⲿµÄ¶¨ÒåÓ¦¸ÃÊÇ Window_mgr::Screen_mgr Window_mgr::clear(ScreenIndex i) { }
4.1 Ãû×Ö²éÕÒÓëÀàµÄ×÷ÓÃÓò
¡¡¡¡Ò»°ãÇé¿öÏ£¬Ãû×Ö²éÕҵIJ½ÖèÈçÏ£º
- ÔÚÃû×ÖËùÔڵĿéÖÐÑ°ÕÒÆäÉùÃ÷Óï¾ä£¬Ö»¿¼ÂÇÔÚÃû×ÖµÄʹÓÃ֮ǰ³öÏÖµÄÉùÃ÷
- Èç¹ûûÕÒµ½£¬¼ÌÐø²éÕÒÍâ²ã×÷ÓÃÓò
- Èç¹û×îÖÕûÓÐÕÒµ½Æ¥ÅäµÄÉùÃ÷£¬Ôò³ÌÐò±¨´í
¡¡¡¡µ«¶ÔÓÚÀàÄÚ²¿µÄ³ÉÔ±º¯ÊýÀ´Ëµ£¬ÆðÃû×Ö²éÕҵIJ½Öè²»Ò»Ñù£¬ÀàµÄ¶¨Òå·ÖÁ½²½´¦Àí£º
- Ê×ÏÈ£¬±àÒë³ÉÔ±µÄÉùÃ÷
- Ö±µ½ÀàÈ«²¿¿É¼ûºó²Å±àÒ뺯ÊýÌå
NOTE£º±àÒëÆ÷´¦ÀíÍêÀàÖеÄÈ«²¿ÉùÃ÷ºó²Å»á´¦Àí³ÉÔ±º¯ÊýµÄ¶¨Òå¡£
ÓÃÓÚÀà³ÉÔ±ÉùÃ÷µÄÃû×Ö²éÕÒ
¡¡¡¡ÉÏÊöÁ½½×¶ÎµÄ´¦Àí·½Ê½Ö»ÊÊÓÃÓÚ³ÉÔ±º¯ÊýÖÐʹÓõÄÃû×Ö¡£ÉùÃ÷ÖÐʹÓõÄÃû×Ö£¬°üÀ¨·µ»ØÀàÐÍ»òÕß²ÎÊýÁбíÖÐʹÓõÄÃû×Ö£¬¶¼±ØÐëÔÚʹÓÃÇ°È·±£¿É¼û¡£
ÀàÐÍÃûÒªÌØÊâ´¦Àí
¡¡¡¡ÀàÐÍÃûµÄ¶¨Òåͨ³£³öÏÖÔÚÀàµÄ¿ªÊ¼´¦£¬ÕâÑùÄÜÈ·±£ËùÓÐʹÓøÃÀàÐ͵ijÉÔ±¶¼³öÏÖÔÚÀàÃûµÄ¶¨ÒåÖ®ºó¡£
typedef double Money; class Screen {};
³ÉÔ±¶¨ÒåÖеÄÆÕͨ¿é×÷ÓÃÓòµÄÃû×Ö²éÕÒ
¡¡¡¡³ÉÔ±º¯ÊýÖÐʹÓõÄÃû×Ö°´ÕÕÈçÏ·½Ê½½âÎö£º
- Ê×ÏÈ£¬ÔÚ³ÉÔ±º¯ÊýÄÚ²éÕÒ¸ÃÃû×ÖµÄÉùÃ÷
- Èç¹ûÔÚ³ÉÔ±º¯ÊýÄÚûÓÐÕÒµ½£¬ÔòÔÚÀàÄÚ¼ÌÐø²éÕÒ
- Èç¹ûÀàÄÚҲûÕÒµ½¸ÃÃû×ÖµÄÉùÃ÷£¬ÔòÔÚÍâΧ×÷ÓÃÓò¼ÌÐø²éÕÒ
¡¡¡¡µ±³ÉÔ±º¯ÊýÉùÃ÷ÁËÓëÀàµÄ³ÉԱͬÃûµÄ³ÉԱʱ£¬³ÉÔ±º¯ÊýÖеÄÉùÃ÷½«¸²¸ÇÀàµÄͬÃû³ÉÔ±£¬Èç¹ûÏëʹÓÃÀàµÄͬÃû³ÉÔ±£¬´Ëʱ¿ÉÒÔ¼ÓÉÏÀàµÄÃû×Ö»òÏÔʽµØʹÓÃthisÖ¸ÕëÀ´Ç¿ÖÆ·ÃÎÊÀàµÄ³ÉÔ±¡£
5¡¢ÔÙ̸¹¹Ô캯Êý
5.1 ¹¹Ô캯Êý³õʼֵÁбí
Sales_data::Sales_data(const string &s, unsigned cnt, double price) { bookNo=s; units_sold=cnt; revenue=cnt*price; }
¡¡¡¡×¢ÒâÉÏÊöÕâÖÖ¹¹Ô캯ÊýµÄд·¨£¬ÆäºÍʹÓÃðºÅµÄÐÎʽ²»Í¬£¬Çø±ðÊÇʹÓÃðºÅÊdzõʼ»¯ÁËËüµÄÊý¾Ý³ÉÔ±£¬¶øÕâ¸ö°æ±¾ÊǶÔÊý¾Ý³ÉÔ±Ö´ÐÐÁ˸³Öµ²Ù×÷¡£ÕâÒÔÇø±ðµ½µ×»áÓÐʲôÉî²ã´ÎµÄÓ°ÏìÍêÈ«ÒÀÀµÓÚÊý¾Ý³ÉÔ±µÄÀàÐÍ¡£
¹¹Ô캯ÊýµÄ³õʼֵÓÐʱ±Ø²»¿ÉÉÙ
ÓÐʱ¿ÉÒÔºöÂÔÊý¾Ý³ÉÔ±³õʼ»¯ºÍ¸³ÖµÖ®¼äµÄ²îÒ죬µ«²¢·Ç×ÜÄÜÕâÑù¡£Èç¹û³ÉԱʱconst»òÕßÊÇÒýÓõĻ°£¬±ØÐ뽫Æä³õʼ»¯¡£ÀàËƵģ¬µ±³ÉÔ±ÊôÓÚijÖÖÀàÀàÐÍÇÒ¸ÃÀàûÓж¨ÒåĬÈϹ¹Ô캯Êýʱ£¬Ò²±ØÐ뽫Õâ¸ö³ÉÔ±³õʼ»¯¡£
class ConstRef { public: ConstRef(int ii); private: int i; const int ci; int &ri; }; ConstRef::ConstRef(int ii) { i=ii; //ÕýÈ· ci=ii; //´íÎ󣬲»Äܸøconst¸³Öµ ri=i; //´íÎó£¬riûÓгõʼ»¯ }
ÕýÈ·µÄ¹¹Ô캯ÊýÓ¦¸ÃÊÇ
CosntRef::ConstRef(int ii):i(ii),ci(ii),ri(i){}
NOTE£ºÈç¹û³ÉÔ±ÊÇconst¡¢ÒýÓᢻòÕßÊôÓÚijÖÖδÌṩĬÈϹ¹Ô캯ÊýµÄÀàÀàÐÍ£¬ÎÒÃDZØÐëͨ¹ý¹¹Ô캯Êý³õʼֵΪÕâЩ³ÉÔ±Ìṩ³õÖµ¡£
½¨ÒéʹÓù¹Ô캯Êý³õʼֵ¡£
³ÉÔ±³õʼ»¯µÄ˳Ðò
³ÉÔ±µÄ³õʼ»¯Ë³ÐòÓëËüÃÇÔÚÀඨÒåÖеijöÏÖ˳ÐòÒ»Ö£¬¹¹Ô캯Êý³õʼֵÁбíÖгõʼֵµÄÇ°ºóλÖùØϵ²»»áÓ°Ïìʵ¼ÊµÄ³õʼ»¯Ë³Ðò¡£
NOTE£º×îºÃÁî¹¹Ô캯Êý³õʼֵµÄ˳ÐòÓë³ÉÔ±ÉùÃ÷µÄ˳Ðò±£³ÖÒ»Ö£¬Èç¹û¿ÉÄܵĻ°£¬¾¡Á¿±ÜÃâʹÓÃijЩ³ÉÔ±³õʼ»¯ÆäËû³ÉÔ±¡£
ĬÈÏʵ²ÎºÍ¹¹Ô캯Êý
Èç¹ûÒ»¸ö¹¹Ô캯ÊýΪËùÓвÎÊý¶¼ÌṩÁËĬÈÏʵ²Î£¬ÔòËüʵ¼ÊÉÏÒ²¶¨ÒåÁËĬÈϹ¹Ô캯Êý¡£
5.2 ίÍй¹Ô캯Êý
Ò»¸öίÍй¹Ô캯ÊýʹÓÃËüËùÊôÀàµÄÆäËû¹¹Ô캯ÊýÖ´ÐÐËü×Ô¼ºµÄ³õʼ»¯¹ý³Ì£¬»òÕß˵Ëü°ÑËü×Ô¼ºµÄһЩְÔðίÍиøÁËÆäËû¹¹Ô캯Êý¡£
class Sales_data { public: Sales_data(string s,unsigned cnt, double price):bookNo(s), units_sold(cnt), revenue(cnt*price){} //ÆäÓ๹Ô캯ÊýÈ«¶¼Î¯ÍиøÉÏÃæµÄ¹¹Ô캯Êý Sales_data():Sales(" ",0,0){} Sales_data(string s): Sales_data(s,0,0){} Sales_data(istream &is):Sales_data(){read(is,*this);} };
µ±Ò»¸ö¹¹Ô캯ÊýίÍиøÁíÒ»¸ö¹¹Ô캯Êýʱ£¬ÊÜίÍеĹ¹Ô캯ÊýµÄ³õʼֵÁбíºÍº¯ÊýÌå±»ÒÀ´ÎÖ´ÐС£ÔÚSales_dataÀàÖУ¬ÊÜίÍеĹ¹Ô캯ÊýÌåÇ¡ºÃÊǿյġ£¼ÓÈ뺯ÊýÌå°üº¬ÓдúÂëµÄ»°£¬½«ÏÈÖ´ÐÐÕâЩ´úÂ룬Ȼºó¿ØÖÆȨ²Å»á½»»¹¸øίÍÐÕߵĺ¯ÊýÌå¡£
5.3 ĬÈϹ¹Ô캯ÊýµÄ×÷ÓÃ
ÔÚʵ¼ÊÖУ¬Èç¹û¶¨ÒåÁËÆäËû¹¹Ô캯Êý£¬ÄÇô×îºÃÒ²Ìṩһ¸öĬÈϹ¹Ô캯Êý
5.4 ÒþʽµÄÀàÀàÐÍת»»
¿ÉÒÔΪÀඨÒåÒþʽת»»¹æÔò¡£
Èç¹û¹¹Ô캯ÊýÖ»½ÓÊÜÒ»¸öʵ²Î£¬ÔòËüʵ¼ÊÉ϶¨ÒåÁËת»»Îª´ËÀàÀàÐ͵ÄÒþʽת»»»úÖÆ£¬ÓÐʱ°ÑÕâÖÖ¹¹Ô캯Êý³ÆΪת»»¹¹Ô캯Êý¡£
Ö»ÔÊÐíÒ»²½ÀàÀàÐÍת»»
±àÒëÆ÷Ö»»á×Ô¶¯µØÖ´ÐÐÒ»²½ÀàÐÍת»»
item.combine("hello!");
¡¡¡¡Õâ¸ö¾ÍÊÇ´íÎóµÄ£¬ÐèÒªÁ½ÖÖת»»£¬Ê×ÏȽ«"hello!"ת»»³Éstring£¬È»ºóÔÙ½«ÁÙʱµÄstringת»»³ÉSales_data¡£
¡¡¡¡¶ÔÓÚÉÏÊöÕâÖÖ´íÎ󣬿ÉÒÔÏÔʽµØ½«¡°hello!¡±×ª»»³Éstring
item.combine(string("hello!"))
ÀàÀàÐÍת»»²»ÊÇ×ÜÓÐЧ
ÒÖÖƹ¹Ô캯Êý¶¨ÒåµÄÒþʽת»»
¿ÉÒÔͨ¹ý½«¹¹Ô캯ÊýÉùÃ÷Ϊexplicit×èÖ¹¹¹Ô캯ÊýµÄÒþʽת»»
class Sales_data { public: Sales_data()=default; Sales_data(const string &s,unsigned n,double p):bookNo(s),units_sold(n),revenue(p*n){} explicit Sales_data(const string &s):bookNo(s){} explicit Sales_data(istream&); };
´Ëʱ£¬Ã»ÓÐÈκι¹Ô캯ÊýÄÜÓÃÓÚÒþʽµØ´´½¨Sales_data¶ÔÏó£¬
item.combine(null_book); item.combine(cin);
¡¡¡¡ÕâÁ½ÖÖÊÔͼͨ¹ýstringºÍistreamת»»³ÉSales_data¶ÔÏóµÄÐÐΪ¶¼²»ÄÜͨ¹ý±àÒë¡£
NOTE£ºexplicitÖ»¶ÔÒ»¸öʵ²ÎµÄ¹¹Ô캯ÊýÓÐЧ£¬ÇÒÖ»ÄÜÔÚÀàÄÚÉùÃ÷¹¹Ô캯Êýʱ²ÅʹÓÃexplicit¹Ø¼ü×Ö£¬ÔÚÀàÍⲿ¶¨Òåʱ²»Ó¦Öظ´¡£
explicit¹¹Ô캯ÊýÖ»ÄÜÓÃÓÚÖ±½Ó³õʼ»¯
Sales_data item1(null_book); //ÕýÈ·£¬Ö±½Ó³õʼ»¯ Sales_data item2=null_book; //´íÎó£¬null_bookÏëÒþʽת»»³ÉSales_data,µ«¹¹Ô캯ÊýÉùÃ÷ÁËexplicit£¬Òò´Ë²»ÄÜÒþʽת»»
Ϊת»»ÏÔʽµØʹÓù¹Ô캯Êý
¾¡¹Ü±àÒëÆ÷²»»á½«explicitµÄ¹¹Ô캯ÊýÓÃÓÚÒþʽת»»£¬µ«ÊÇ¿ÉÒÔʹÓÃÕâÑùµÄ¹¹Ô캯Êý½øÐÐÏÔʽǿÖÆת»»¡£
itme.combine(Sales_data(null_book)); //Ö±½Óµ÷ÓÃSales_data¹¹Ô캯Êý item.combine(static_cast<Sales_data>(cin)); //Ç¿ÖÆת»»
5.5 ¾ÛºÏÀà
¾ÛºÏÀàʹµÃÓû§¿ÉÒÔÖ±½Ó·ÃÎÊÆä³ÉÔ±£¬²¢ÇÒ¾ßÓÐÌØÊâµÄ³õʼ»¯Óï·¨ÐÎʽ¡£µ±Ò»¸öÀàÂú×ãÏÂÃæÌõ¼þʱ£¬ÊǾۺÏÀà
- ËùÓгÉÔ±¶¼ÊÇpublic
- ûÓж¨ÒåÈκι¹Ô캯Êý
- ûÓÐÀàÄÚ³õʼֵ
- ûÓлùÀ࣬ҲûÓÐvirtualº¯Êý
¿ÉÒÔÌṩһ¸ö»¨À¨ºÅÀ¨ÆðÀ´µÄ³ÉÔ±³õʼֵÁÐ±í£¬²¢ÓÃËüÀ´³õʼ»¯¾ÛºÏÀàµÄÊý¾Ý³ÉÔ±¡£³õʼֵµÄ˳Ðò±ØÐëºÍÉùÃ÷µÄ˳ÐòÒ»Ö£¬Èç¹û³õʼֵµÄÊýÄ¿ÉÙÓÚÀàµÄ³ÉÔ±µÄÊýÁ¿£¬ºóÃæµÄÔòĬÈϳõʼ»¯¡£
6¡¢ÀàµÄ¾²Ì¬³ÉÔ±
ÀàµÄ¾²Ì¬³ÉÔ±Ö»ÓëÀà±¾ÉíÓйأ¬¶øÓëÀàµÄ¶ÔÏóÎ޹ء£
ÉùÃ÷¾²Ì¬³ÉÔ±
ÔÚÉùÃ÷Ç°Ãæ¼ÓÉÏ¡°static¡±¹Ø¼ü×Ö£¬Ê¹ÆäÓëÀà¹ØÁªÔÚÒ»Æ𡣺ÍÆäËû³ÉÔ±Ò»Ñù£¬¾²Ì¬³ÉÔ±¿ÉÒÔÊÇpublic»òprivate¡£
¾²Ì¬³ÉÔ±º¯ÊýÒ²²»ÓëÈκζÔÏó°ó¶¨ÔÚÒ»Æð£¬ËüÃDz»°üº¬thisÖ¸Õë¡£¾²Ì¬³ÉÔ±º¯Êý²»ÄÜÉùÃ÷³ÉconstµÄ£¬¶øÇÒÒ²²»ÄÜÔÚstaticº¯ÊýÌåÄÚʹÓÃthisÖ¸Õë¡£
ʹÓÃÀàµÄ¾²Ì¬³ÉÔ±
ʹÓÃ×÷ÓÃÓòÔËËã·ûÖ±½Ó·ÃÎʾ²Ì¬³ÉÔ±¡£
double r; r=Account::rate();
»¹¿ÉÒÔʹÓÃÀàµÄ¶ÔÏó¡¢ÒýÓûòÖ¸ÕëÀ´·ÃÎʾ²Ì¬³ÉÔ±¡£
Account ac1; Account *ac2=&ac1; r=ac1.rate(); r=ac2->rate();
³ÉÔ±º¯Êý²»ÓÃͨ¹ý×÷ÓÃÓòÔËËã·û¾ÍÄÜÖ±½ÓʹÓþ²Ì¬³ÉÔ±¡£
¶¨Ò徲̬³ÉÔ±
¼È¿ÉÒÔÔÚÀàÄÚÒ²¿ÉÒÔÔÚÀàÍⶨÒ徲̬³ÉÔ±º¯Êý¡£µ±ÔÚÀàµÄÍⲿ¶¨Ò徲̬³ÉԱʱ£¬²»ÄÜÖظ´static¹Ø¼ü×Ö£¬static¹Ø¼ü×ÖÖ»ÄܳöÏÖÔÚÀàÄÚ²¿µÄÉùÃ÷Óï¾ä¡£
Ò»°ãÀ´Ëµ£¬²»ÄÜÔÚÀàµÄÄÚ²¿³õʼ»¯¾²Ì¬³ÉÔ±¡£Ïà·´µØ£¬±ØÐëÔÚÀàµÄÍⲿ¶¨ÒåºÍ³õʼ»¯Ã¿¸ö¾²Ì¬³ÉÔ±£¬ÇÒÖ»Äܱ»¶¨ÒåÒ»´Î¡£
1.h class Account { private: static double interestRate; static double initRate(); }; 1.cpp double Account::interestRate=initRate(); //¶¨Òå²¢³õʼ»¯¾²Ì¬³ÉÔ±
´ÓÀàÃûAccount¿ªÊ¼£¬¶¨ÒåÓï¾äµÄÊ£Óಿ·Ö¾Í¶¼Î»ÓÚÀàµÄ×÷ÓÃÓòÖ®ÄÚÁË£¬Òò´Ë£¬¿ÉÒÔÖ±½ÓʹÓÃinitRateº¯Êý£¬¼´Ê¹ËüÊÇprivateµÄ¡£
¾²Ì¬³ÉÔ±µÄÀàÄÚ³õʼ»¯
¼´Ê¹Ò»¸ö³£Á¿¾²Ì¬Êý¾Ý³ÉÔ±ÔÚÀàÄÚ²¿±»³õʼ»¯ÁË£¬Í¨³£Çé¿öÏÂÒ²Ó¦¸ÃÔÚÀàµÄÍⲿ¶¨ÒåһϸóÉÔ±¡£
¾²Ì¬³ÉÔ±ÄÜÓÃÓÚijЩ³¡¾°£¬¶øÆÕͨ³ÉÔ±²»ÄÜ
¾²Ì¬Êý¾Ý³ÉÔ±µÄÀàÐÍ¿ÉÒÔ¾ÍÊÇËüËùÊôµÄÀàÀàÐÍ£¬¶ø·Ç¾²Ì¬Êý¾Ý³ÉÔ±ÔòÊܵ½ÏÞÖÆ£¬Ö»ÄÜÉùÃ÷³ÉËüËùÊôÀàµÄÖ¸Õë»òÒýÓá£
class Bar { private: static Bar mem1; //ÕýÈ·£¬¾²Ì¬³ÉÔ±¿ÉÒÔÊDz»ÍêÈ«ÀàÐÍ Bar *mem2; //ÕýÈ·£¬Ö¸Õë³ÉÔ±¿ÉÒÔÊDz»ÍêÈ«ÀàÐÍ Bar mem3; //´íÎó£¬Êý¾Ý³ÉÔ±±ØÐëÊÇÍêÈ«ÀàÐÍ };
¾²Ì¬³ÉÔ±ºÍÆÕͨ³ÉÔ±µÄÁíÒ»¸öÇø±ð¾ÍÊÇ¿ÉÒÔʹÓþ²Ì¬³ÉÔ±×÷ΪĬÈÏʵ²Î
class Screen { public: Screen& clear(char=bkground); private: static const char bkground; };
±êÇ©£º
°æȨÉêÃ÷£º±¾Õ¾ÎÄÕ²¿·Ö×ÔÍøÂ磬ÈçÓÐÇÖȨ£¬ÇëÁªÏµ£ºwest999com@outlook.com
Ìرð×¢Ò⣺±¾Õ¾ËùÓÐתÔØÎÄÕÂÑÔÂÛ²»´ú±í±¾Õ¾¹Ûµã£¬±¾Õ¾ËùÌṩµÄÉãÓ°ÕÕƬ£¬²å»£¬Éè¼Æ×÷Æ·£¬ÈçÐèʹÓã¬ÇëÓëÔ×÷ÕßÁªÏµ£¬°æȨ¹éÔ×÷ÕßËùÓÐ
ÉÏһƪ£º·Ç×èÈûsocket
ÏÂһƪ£ºC++ÄÚ´æ¶ÔÆë
- C++ ת»»º¯Êý´îÅäÓÑÔªº¯Êý 2020-06-10
- C++ ×Ô¶¯×ª»»ºÍÇ¿ÖÆÀàÐÍת»»£¨Óû§×Ô¶¨ÒåÀàÀàÐÍ£© 2020-06-10
- C++ randº¯Êý 2020-06-10
- C++ ÓÑÔªº¯Êý 2020-06-10
- C++ ÔËËã·ûÖØÔØ 2020-06-10
IDC×ÊѶ£º Ö÷»ú×ÊѶ ×¢²á×ÊѶ ÍйÜ×ÊѶ vps×ÊѶ ÍøÕ¾½¨Éè
ÍøÕ¾ÔËÓª£º ½¨Õ¾¾Ñé ²ß»®Ó¯Àû ËÑË÷ÓÅ»¯ ÍøÕ¾Íƹã Ãâ·Ñ×ÊÔ´
ÍøÕ¾ÁªÃË£º ÁªÃËÐÂÎÅ ÁªÃ˽éÉÜ ÁªÃ˵ãÆÀ Íø׬¼¼ÇÉ
ÐÐÒµ×ÊѶ£º ËÑË÷ÒýÇæ ÍøÂçÓÎÏ· µç×ÓÉÌÎñ ¹ã¸æ´«Ã½
ÍøÂç±à³Ì£º Asp.Net±à³Ì Asp±à³Ì Php±à³Ì Xml±à³Ì Access Mssql Mysql ÆäËü
·þÎñÆ÷¼¼Êõ£º Web·þÎñÆ÷ Ftp·þÎñÆ÷ Mail·þÎñÆ÷ Dns·þÎñÆ÷ °²È«·À»¤
Èí¼þ¼¼ÇÉ£º ÆäËüÈí¼þ Word Excel Powerpoint Ghost Vista QQ¿Õ¼ä QQ FlashGet ѸÀ×
ÍøÒ³ÖÆ×÷£º FrontPages Dreamweaver Javascript css photoshop fireworks Flash
³ÌÐòÉè¼Æ£º Java¼¼Êõ C/C++ VB delphi
- Photoshop»æÖÆÁ¢Ìå·ç¸ñµÄ΢Ц±íÇé
- PSÎÄ×ÖÌØЧ½Ì³Ì£ºÖÆ×÷¹«Â·ÉϸöÐÔµÄÍ¿Ñ»
- PhotoshopÉè¼Æ¾í±ßЧ¹ûµÄ±äÐνð¸ÕµçÓ°
- PSÉ«²ÊÐÞ¸´½Ì³Ì£ºÀûÓÃÉ«½×¹¤¾ß¿ìËÙ¸øºì
- PS°ë͸Ã÷ÎïÌå¿Ùͼ£ºÀûÓÃͨµÀÑ¡Çø¹¤¾ß¿Ù
- PSº£±¨Éè¼Æ¼¼Çɽ̳̣ºÑ§Ï°ÖÆ×÷¸öÐԵč
- PSͼƬÌØЧÖÆ×÷½Ì³Ì£ºÑ§Ï°¸øÌúËþͼƬÖÆ
- ѧϰÓÃphotoshop°Ñ»ë×ǵĺ£Ë®ÕÕƬºóÆÚ
- PS¹Å·çÕÕƬ½Ì³Ì£º¸ø¹Å·çÃÀÅ®´òÔì³öÅ®ÏÀ
- PS¸öÐÔÈËÎﺣ±¨ÖÆ×÷£ºÉè¼Æ´´ÒâʱÉеIJ£
- Ôõô͵ÉϱðÈ˵Ä΢ÐÅ ×î¼òµ¥ÍµÎ¢ÐÅÃÜÂë
- ͼ-µÚ7ÕÂ-¡¶Êý¾Ý½á¹¹Ì⼯¡·Ï°Ìâ½âÎö-ÑÏ
- ·¬ÇÑÖúÊÖ ×îРVisual Assist X ÊÊÓ¦ÓÚ
- »ùÓÚQCustomPlot»æͼ£¬Êó±ê¸úË涯̬ÏÔ
- C++ÖÐdoubleÀàÐ͵ÄÊý×ÖÈçºÎ±£ÁôÈýλС
- Öйú´óѧMOOC-³ÂÔ½¡¢ºÎÇÕÃú-Êý¾Ý½á¹¹-2
- °¢À²®Êý×Öµ½ÖÐÎÄ´óдÊý×ÖµÄת»»
- base64×Ö·û´®×ªÎļþ£¬ÒÔ¼°ngImgCrop²Ã
- cÓïÑÔÐÄÐθæ°×´úÂëʵÏÖ
- ±à³ÌÓïÑÔ¡ª¡ªC----ϸ½Ú