Vector step, step_2(3.9, 4.9), step_3(8.0, 9.9);
Vector result(0.0, 0.0);
Vector m=step_3;
step_2=step_3;
Vector d=step+step_2+step_3; //a
result=step+step_2+step_3;
有一个Vector类,我对它的构造函数,析构函数和拷贝构造函数都添加了一些提示信息,上面的代码对于 a行不同的编译器会有不同的操作,下面是我的编译器的输出结果,请教各位对于a行,其运行机制是怎么样?第6个生成的对象是一个临时对象还是说是Vector对象d?
字数限制,Vector类有一个number_count的静态变量用来统计Vector实例的数目,每次调用构造或者拷贝构造函数number_count加1,每调用一次析构函数number_count减1,
每调用一次构造函数就输出一句:Vector constructor called. The number_count Vector object constructed;每调用一次拷贝才行函数就输出一句:Vector Copy Constructor called. The number_count Vector object constructed
,每调用一次析构函数就输出一句:Vector destructor called. The number_count Vector object destructed.
é®é¢å°±å¨è¿éï¼å¦æéå°ä¸ä¸ªèµå¼è¡¨è¾¾å¼ï¼è¡¨è¾¾å¼ç左边æ¯ä¸ä¸ªæ°çç±»å®ä¾ï¼è¡¨è¾¾å¼çå¦å¤ä¸è¾¹åæ¯ä¸ä¸ªå·²ç»åå¨çç±»å®ä¾è¿ç®è¡¨è¾¾å¼ï¼å³è¾¹çæç»è®¡ç®ç»æ临æ¶ç±»å®ä¾æ¯è¯å®ä¼è°ç¨ç±»çæé å½æ°çï¼é£è¯·é®è¡¨è¾¾å¼å·¦è¾¹çæ°å®ä¾åå³è¾¹è¿ä¼è¦è°ç¨æé å½æ°åï¼
追çä½ ä¸¾ä¸ªä¾åä¸è¡åï¼ä»ä¹ç±»å®ä¾ä¹±ä¸å «ç³çç¿»è¯ï¼ä¸ç¥éä½ è¯´ä»ä¹ï¼instance / entity è¿å« å®ä½ å§ ï¼ ä½ åªè¦è®°çC++ æ¯å¼ºç±»åçï¼ä¸å®defineä¸ä¸ªobjectä¾¿å¿ é¡»åå§åï¼éè¿èµå¼ãå¤å¶ãæè é»è®¤çãç¥å¥çç¼è¯å¨ä¹å¯è½ä¼éè¿synthesizeç»ä½ å¼ä¸ªåå§åãããæ³æä¸å±åºç¨çè¯å¦JAVAï¼ææC++çç¼è¯å¨é½å¤ªå¼ºå¤§ã太诡å¼äºï¼C++被æç尾大ä¸æï¼èC++å®è´¨æ¯Cï¼è¿æC çç®æ´ç»ä¸¢æäºãç°å¨æä¸æçï¼ä¸è¦ç®¡ä»ï¼è¦æ¸©æ èç¥æ°ï¼ä»¥åå°±æäºï¼éè¦çæ¯å°è£ ã继æ¿ã设计模å¼è¿äºææ³ã
追é®æä¸é¢è¯´çå°±æ¯è¿å¥è¯ï¼Vector d=step+step_2+step_3;Vectorç±»çå®ä¾dæ¯ç¨å³è¾¹ç表达å¼è¿è¡åå§åçï¼ä½ å¯¹ç §çä¸é¢æ说çå°±æç½ææ³è¦é®çä¸è¥¿äº
追çoperator+ operator= ä¹ç±»ç æä½ç¬¦éè½½ ã å¼ç¨ ãæåå½æ°æ¯ä¼èªå¨è°ç¨çï¼ä½ èªå·±å»çä¹¦å§ ï¼ æ¨è thinking in C++ è±æç第ä¸å·åå¾å¾å¥½ï¼çæé£æ¬ä¹¦ä½ C++åºç¡å°±ä¸éäºï¼è¿äºä¸è¥¿ä¹å°±ç¥éäºã