Effective C++回顾(7)

原创 2006年05月25日 23:07:00

条款11:如果class内动态配置有内存,请为此class声明一个copy constructor和一个assignment运算符

在内存分配的时候,增加copyassignment运算符没有问题,可是在很多情况下仅仅通过增加copyassignment还不能完成任务,我自己就碰到过这种问题:

class CMyLibrary

{

public:

       CMyLibrary(LPCTSTR lpszLibName)

{

       m_hInst = ::LoadLibrary(lpszLibName);

}

~CMyLibrary()

{

       if (m_hInst)

{

       ::FreeLibrary(m_hInst);

}

}

private:

       HINSTANCE m_hInst;

}

实现这个类用于管理DLL,在这种情况下就很难实现copyassignment功能,因为我们还没有办法Copy出一个HINSTANCE。我们也许可以采用attach功能的实现,在copyassignment函数中传入的时候没有const值,允许copyassignment函数修改其值。这当然是一种方法,终归不是最优方法,不仅失去了copyassignment操作符的原意,而且还失去了强大的const作用(犯了第一条)。后来我自己实现了一个share_library类,在这个share_library类中采用引用计数来管理HINSTANCE句柄,在每次调用copyassignment的功能的时候,自身的引用计数减1,把传入值的引用计数加1,类似于COM的设计,而且这样工作的非常好。

 

待续……

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Effective C++(7) 为多态基类声明virtual析构函数 or Not

问题聚焦: 已经对一个对象执行了delete语句,还会发生内存泄漏吗?

Effective C++笔记(7)—实现

Effective C++笔记

Effective C++读书笔记(7)

昨天偷懒了,今天补。 条款10:令operator=返回一个reference to *this Have assignment operators return areference t...

Effective Modern C++ 条款7 创建对象时区分( )和{ }

Effective Modern C++ 条款7

(原文)Effective C++条款7:为多态基类声明VIRTUAL析构函数

今天碰到一个bug,查了半天发现是某位虚基类没有定义虚析构函数,delete时导致派生类没有正确释放资源,遂从网上搜到一篇文章,留个记号 关于virtual desctructor的详细讨论。同样来...

《Effective C++》item7:为多态基类声明virtual析构函数

(1)为什么要用虚函数? (2)为什么要定义virtual析构函数? (3)什么时候该定义virtual析构函数和什么时候不该定义virtual析构函数?

<Effective Mordern C++>笔记:Item 7:Distinguish () and {} when creating objs.

从C++11开始,初始化有三种方式:括号,=赋值和列表(也可=后接列表)。 先看如下例子开个头://Widget是个自定义类Widget w1; // 调用默认构造函数 Widget w2 = w1;...

Effective C++ 学习笔记(7)

条款10 令赋值操作符返回一个*this对象的引用

Effective C++ 7

7.预先准备好内存不够的情况。 new在无法完成内存分配请求时,会抛出异常,异常了要怎么办,这是一个很现实且以后绝对要碰到的问题。 在c中一般使用宏来分配内存并检测分配是否成功,c++中类似以下函...

Effective C++ --7 模板与泛型编程

上一篇Effective C++ -- 6 继承与面向对象设计   41、了解隐式接口和编译器多态  (1)class和template都支持接口和多态。Class支持显示接口,多态是指virt...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)