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