摘要:
1、对于内置类型,x = x+y 与x+=y的结果相同。2、x=x+y 与 x+=y的结果相同,但二者做的事情差别很大。 a、x=x+y做的事情:方法内有个局部对象,值为x+y,返回局部对象,返回值是个临时对象,这个临时对象赋值给x。 b、x+=y做的事情:直接在x上操作,修改x的内容,并返回x的引用。3、从上面的分析可以知道,操作符复合形式(+=)比单独形式(+)效率高很多,复合形式避免了局部对象和临时对象的构造和析构,以及对x的copy赋值。4、为了避免重复代码和保持代码的一致性,应该让+调用+=,如下: template const T operator+(const T& l. 阅读全文
posted @ 2014-02-24 21:03
Andy Niu
阅读(290)
评论(0)
推荐(0)
摘要:
1、在类中可以访问private成员包括两层含义:可以访问this指针的private成员;可以访问同类对象的private成员。2、这里的String可以认为是个资源管理类,内部有个char指针,在堆上分配对象,而且对于String应该是深复制,不是复制指针,而是要复制指针指向的内容。String类的定义(头文件): 1 #ifndef String_H_ 2 #define String_H_ 3 class String 4 { 5 public: 6 String(const char* src); 7 String(const String& rhs); 8 String&a 阅读全文
posted @ 2014-02-24 19:51
Andy Niu
阅读(377)
评论(0)
推荐(0)
摘要:
1 char* strcpy(char* strDest, const char* strSrc)2 {3 assert((strDest!=NULL) && (strSrc !=NULL)); //strDest和strSrc不为空4 char* address = strDest; //保存strDest,用于返回5 while( (*(strDest++) = *(strSrc++)) != '\0' ); //逐个字符赋值6 return address; //返回地址 7 }注意:1、栈上的char数组,数组名就是一个指针,这个指针的指向不... 阅读全文
posted @ 2014-02-24 19:01
Andy Niu
阅读(254)
评论(0)
推荐(0)