由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 这个dtor为啥能被调用呢
相关主题
Interview question: is the following code OK?Forward declaration with unique_ptr
一个C++的问题boost::function 的 syntax 问题
vector的析构问题C++中size_type怎么处理?
Help! Virtual Destructor这两个地方是否需要typename?
find bugs of c++ codes再问boost! 谁在用boost
pointer to base class = new derived, what will happend??如何 define/initialize static data member of a class templ
我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。今天被一个面试问题难住了
c++ dynamic castc++里边protected member可以在自己所在类调用码?
相关话题的讨论汇总
话题: ptr话题: shared话题: 析构话题: dtor话题: 调用
进入Programming版参与讨论
1 (共1页)
X*4
发帖数: 101
p***o
发帖数: 1252
2
shared_ptr has a templated ctor shared_ptr.
The B's dtor is stored in an object created in that ctor.
That allows your code to work correctly even when A's dtor is not virtual.

【在 X*4 的大作中提到】

: 关于boost shared_ptr的,
: #include
: #include
: #include
: class A{
: public:
: virtual void sing() = 0;
: protected:
: virtual ~A(){
: std::cout << "dtor of base" << std::endl;

b***i
发帖数: 3043
3
看Synopsis
template class shared_ptr {
public:
typedef T element_type;
shared_ptr(); // never throws
template explicit shared_ptr(Y * p);
~shared_ptr(); // never throws
Effects:
If *this is empty, or shares ownership with another shared_ptr instance (use
_count() > 1), there are no side effects.
Otherwise, if *this owns a pointer p and a deleter d, d(p) is called.
Otherwise, *this owns a pointer p, and delete p is called.
可见,你
boost::shared_ptr create(){
boost::shared_ptr
p(new B());
return p;
}
我的理解,就是T==A, 但是Y==B,那个构造函数里p是类型B*的。

【在 X*4 的大作中提到】

: 关于boost shared_ptr的,
: #include
: #include
: #include
: class A{
: public:
: virtual void sing() = 0;
: protected:
: virtual ~A(){
: std::cout << "dtor of base" << std::endl;

1 (共1页)
进入Programming版参与讨论
相关主题
c++里边protected member可以在自己所在类调用码?find bugs of c++ codes
friend function 不能virtual 怎么搞呢?pointer to base class = new derived, what will happend??
如何在c++里定义一个map of map我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
C++里,Base Class如何调用Derived Class的methodc++ dynamic cast
Interview question: is the following code OK?Forward declaration with unique_ptr
一个C++的问题boost::function 的 syntax 问题
vector的析构问题C++中size_type怎么处理?
Help! Virtual Destructor这两个地方是否需要typename?
相关话题的讨论汇总
话题: ptr话题: shared话题: 析构话题: dtor话题: 调用