构造函数中的this指针
2010-10-15 09:07:53 来源:Web开发网核心提示:需要明了的是,【构造/析构/普通】和【虚/非虚】是完全独立的分类方式:●只要是“构造/析构”就“串联(chaining)”●只要是“虚函数”就“可能obj.vfun()”它们可以“一起生效”但&ldq
需要明了的是,【构造/析构/普通】和【虚/非虚】是完全独立的分类方式:
●只要是“构造/析构”就“串联(chaining)”
●只要是“虚函数”就“可能obj.vfun()”
它们可以“一起生效”但“不互相干扰”,比如虚析构函数的情况,看下面的例子:
class superclass
执行
{
virtual ~superclass() { println("superclass::~superclass()") };
};
class subclass : public superclass
{
virtual ~subclass() { println("subclass::~subclass()") };
};superclass * super = new subclass();
的结果是打印出
delete super;subclass::~subclass()
superclass::~superclass()
这意味着当执行delete super;时:
●是否是chaining式call呢?是。因为是析构函数。
●那chaining call从哪里开始呢?从subclass::~subclass() ==〉superclass::~superclass(),
因为superclass * super的实际对象的类型是subclass。
更多精彩
赞助商链接