posted @ 2012-03-22 11:04
03 2012 档案
摘要:View Code 让编译器进行隐式类型转换所造成的弊端要大于它所带来的好处,所以除非你确实需要,不要定义类型转换函数。隐式类型转换的缺点:它们的存在将导致错误的发生。例如:class Rational {public: ... operator double() const; // 转换Rational类成double类型};在下面这种情况下,这个函数会被自动调用:Rational r(1, 2); // r 的值是1/2 double d = 0.5 * r; ...
阅读全文
摘要:View Code 由于 某些时刻你需要获取一个 RAII 对象中的原始资源,所以一些 RAII 类的设计者使用了一个小手段来使系统正常运行,那就是:提供一个隐式转换函数。举例说,以下是一个 C 语言 API 中提供的处理字体的一个 RAII 类:FontHandle getFont(); // 来自一个 C 语言 API 省略参数表以简化代码void releaseFont(FontHandle fh); // 来自同一个 C 语言 APIclass Font // RAII 类{ ...
阅读全文
posted @ 2012-03-22 10:55
摘要:View Code 1.返回引用能成为左值eg: fun()=13;2.直接代表传的东西,而不是拷贝3.效率高如果不想fun()=13;加上const修饰引用的话 fun()=13 就会报错
阅读全文
posted @ 2012-03-17 18:10
摘要:View Code class TEST{public: size_t TestFun1() const;private: int mNum;};extern TEST temptest; //修改前TEST& tp() //修改后{ static TEST temptest; return temptest;}class TEST2{public: TEST2(TEST temptest) { mNum = temptest.TestFun1(); //修改前 mN...
阅读全文
posted @ 2012-03-17 11:26
摘要:View Code 当成员函数为const时 constness(常量性)bitwise constness:不更换对象内任何一个字节,编译器判断成员变量没有赋值动作即可。不足:class test{public: char& operator[](size_t index) const { return mPointer[index]; } test(const char* str) { mPointer = new char[strlen(str)+1]; memcpy(mPointer,str,strlen(str)...
阅读全文
posted @ 2012-03-16 17:49
摘要:View Code class test{public: //默认构造函数 test(); //拷贝构造函数 test(const test& para); //重载拷贝赋值操作符 test& operator= (const test& para);};int main(){ test T1; //默认构造函数 test T2(T1); //拷贝构造函数 T1 = T2; //使用操作符拷贝 test T3 = T2; //拷贝构造函数 /*拷贝构造函数:同型对象初始化自我对象。 ...
阅读全文
posted @ 2012-03-15 20:38