2014年8月20日
摘要:
1、在资源管理类中提供对原始资源的访问 前几个条款很棒,它们是对抗资源泄露的壁垒,但很多APIs直接指向 资源,这个时候,我们需要直接访问原始资源。 这里,有两种方法解决上述问题,我们可将RAII对象转换为原始资源。通过 显式转换与隐式转换。 通常,tr1:: shared_ptr 和 auto_ptr 都提供一个get成员函数,用来执行显式转换,也就是返回智能指针内...
阅读全文
posted @ 2014-08-20 15:14
zhuxuekui3
阅读(213)
推荐(0)
摘要:
三、资源管理 资源就是一旦你使用了它,将来不用的时候必须归还系统。C++中最常用的资源就是动态内存分配。其实,资源还有 文件描述符、互斥器、图形界面中的字形、画刷、数据库连接、socket等。 1、 以对象管理资源 void f() { investment *plv = createInvestment(); //这里存在很多不定...
阅读全文
posted @ 2014-08-20 12:39
zhuxuekui3
阅读(183)
推荐(0)
2014年8月16日
摘要:
1、潜在的自我赋值 a[i] = a[j]; *px = *py; 当两个对象来自同一个继承体系时,他们甚至不需要声明为相同类型就可能造成别名。 现在担心的问题是:假如指向同一个对象,当其中一个对象被删,另一个也被删,这会造成不想要的结果。 该怎么办? 比如: widget& widget:: operator+ (const widget& rhs) { ...
阅读全文
posted @ 2014-08-16 11:11
zhuxuekui3
阅读(315)
推荐(0)
摘要:
1、当在一个子类当中调用构造函数,其父类构造函数肯定先被调用。如果此时父类构造函数中有一个virtual函数,子类当中也有,肯定执行父类当中的virtual函数,而此时子类当中的成员变量并未被初始化,所以无法调用子类与之对应的函数。即为指向虚函数表的指针vptr没被初始化又怎么去调用派生类的virtual函数呢?析构函数也相同,派生类先于基类被析构,又如何去找派生类相应的虚函数? 2、做法...
阅读全文
posted @ 2014-08-16 10:50
zhuxuekui3
阅读(217)
推荐(0)
2014年8月15日
摘要:
class DBConn //这个class用来管理DBConnction对象 { public: //自己设计一个新的DBConn接口 方法3 void close() { db.close(); closed = true; }...
阅读全文
posted @ 2014-08-15 17:25
zhuxuekui3
阅读(243)
推荐(0)
摘要:
class TimeKeeper { public: TimeKeeper(); // ~TimeKeeper(); 错误,此作为一个基类,被继承了。其继承类被delete后,基类被销毁,但继承类可能没被销毁 virtual ~TimeKeeper();//必须声明为virtual类型才可以。 protect...
阅读全文
posted @ 2014-08-15 16:42
zhuxuekui3
阅读(216)
推荐(0)
摘要:
class HomeForSale //防止别人拷贝方法一:将相应的成员函数声明为private并且不予实现 { public: private: HomeForSale(const HomeForSale&); HomeForSale& operator = (const HomeForSale&);//只有申明,此函数...
阅读全文
posted @ 2014-08-15 16:10
zhuxuekui3
阅读(209)
推荐(0)
摘要:
//申明一个类时,编译器会默认为你提供四个函数。 //无参构造函数,析构函数,copy构造函数,copy assignment操作符。 template class b { public: b(const char* name, const T& value); b(cons...
阅读全文
posted @ 2014-08-15 15:14
zhuxuekui3
阅读(198)
推荐(0)
摘要:
1、对于某些array不保证其内容被初始化,而vector(来自STL)却有此保证。 2、永远在使用对象前初始化。对于无任何成员的内置类型,必须手工完成。 int x = 0; const int * p = &x; 3、不要混淆赋值与初始化的区别。一般初始化在定义的时候一起进行。而赋值是在定义之后的动作。 比如说在某一个类中的构造函数中,函数的...
阅读全文
posted @ 2014-08-15 12:58
zhuxuekui3
阅读(241)
推荐(0)
摘要:
参考资料:http://blog.csdn.net/bizhu12/article/details/6672723 const的常用用法小结1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int val = 90; val = 100; 错误2. 保护传参时参数不被修改,如果使...
阅读全文
posted @ 2014-08-15 12:10
zhuxuekui3
阅读(243)
推荐(0)