C++中的虚析构函数到底什么时候有用的,什么作用呢。总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的。两段代码:#include using na...
分类:
编程语言 时间:
2014-07-29 12:23:26
阅读次数:
289
设计String类
//C++ 设计String类:构造函数,拷贝构造函数,析构函数,赋值函数
#include
using namespace std;
class String
{
public:
String(const char *str=NULL);
String(const String&another);
~String();
String&operator=(cons...
分类:
编程语言 时间:
2014-07-26 02:59:16
阅读次数:
383
noncopyable大家都知道定义一个空类的时候,它实际包含了构造函数,拷贝构造函数,赋值操作符和析构函数等。这样就很容易产生一个问题,就是当用户调用Aa(“^_^")或者Ac="^_^" 时会发生一些意想不到的行为,所以很多时候我们需要禁用这样的用法。一种方法就是把拷贝构造函数和赋值操作符显式的...
分类:
编程语言 时间:
2014-07-24 04:58:18
阅读次数:
300
面向对象编程概述
继承(Inheritance)
class Quote
{
public:
Quote(){cout<<"Quote的构造函数!"<<endl;}
string isbn() const {cout<<"Quote的isbn()调用!"<<endl; string s="Quote,isbn"; return s;}
virtual double ...
分类:
编程语言 时间:
2014-07-23 13:18:16
阅读次数:
314
这是因为在编写程序时,声明了析构函数,但是没有定义析构函数。你的 CClientSocket 类所在文件包括(.h 和 .cpp)文件没有包含进工程中,就是没有生产相应的.obj文件供连接器进行连接。
解决方案:(1)注释析构函数(2)定义析构函数。
我的解决方法是,在vs对应的include目录和source目录,分别右键Add-> 现有项,选择对应的“GLES-Render.h”文件和“G...
分类:
其他好文 时间:
2014-07-23 00:13:38
阅读次数:
210
写在前面用自己的话分析清楚~智能指针是如何使用的?强指针是如何实现?弱指针如何转化为强指针?智能指针的使用智能指针的使用必须满足如下条件:这个类需要继承自RefBase为什么需要虚析构函数?虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。虚函数的出现是为了...
分类:
其他好文 时间:
2014-07-22 22:46:36
阅读次数:
446
.net的GC机制有两个问题:首先GC并不能释放所有资源,它更不能释放非托管资源。其次,GC也不是实时的,所有GC存在不确定性。为了解决这个问题.NET提供了析构函数public class DisposeClass : System.IDisposable{ //供程序员显式调用的Dispose方...
分类:
其他好文 时间:
2014-07-21 14:16:37
阅读次数:
244
上篇文章中,我们介绍了为什么应该彻底避免编写拷贝构造函数和赋值操作符。今天这篇我们讨论下为什么应该避免在析构函数中编写代码。即让析构函数为空。
例如:
virtual ~MyClass()
{
}
我们用空析构函数这个术语表示花括号内没有代码的析构函数。
需要编写析构函数可能有如下几个原因:
在基类中,可能需要声明虚拟析构函数,这样就可以使用一个指向基类的指针指向一个派生类的实例...
分类:
其他好文 时间:
2014-07-21 13:33:46
阅读次数:
188
0.两个要点a) 一个空类,编译器自动合成默认无参构造函数、析构函数、拷贝构造函数、赋值运算符。b) 在编写类的时候,必须严格区分对象是否可复制。1.运算符重载之 string类1.1 运算符重载的几个要点:a) 运算符重载可以有成员函数和友元函数的形式,后者比前者多一个参数。b) =和+=必须重载...
分类:
编程语言 时间:
2014-07-19 18:30:05
阅读次数:
206
构造函数为什么不能是虚函数从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造...
分类:
编程语言 时间:
2014-07-19 00:05:20
阅读次数:
321