C++ϵͳѧϰ֮ÆߣºÀà

2018-08-26 17:15:32À´Ô´£º²©¿ÍÔ° ÔĶÁ ()

ÐÂÀÏ¿Í»§´ó»ØÀ¡,ÔÆ·þÎñÆ÷µÍÖÁ5ÕÛ

¡¡¡¡ÀàµÄ»ù±¾Ë¼ÏëÊÇÊý¾Ý³éÏóºÍ·â×°¡£

¡¡¡¡Êý¾Ý³éÏóÊÇÒ»ÖÖÒÀÀµÓÚ½Ó¿ÚºÍʵÏÖ·ÖÀëµÄ±à³Ì¼¼Êõ¡£ÀàµÄ½Ó¿Ú°üÀ¨Óû§ËùÄÜÖ´Ðе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++ÄÚ´æ¶ÔÆë