zer*_*int 0 c++ inheritance make-shared
考虑两个班级
class A{
public:
int i;
A(){}
explicit A(const int ii):i(ii){}
virtual ~A(){
cout<<"~A - "<< i <<endl;
}
virtual void inc(){
i++;
cout<<"i: "<<i<<endl;
}
};
class B: public A{
public:
int j;
B(){}
explicit B(const int jj, const int ii=-1):A(ii), j(jj){}
~B(){
cout<<"~B - "<<i<<", "<<j<<endl;
}
void inc(){
A::inc();
j++;
cout<<"j: "<<j<<endl;
}
};
Run Code Online (Sandbox Code Playgroud)
现在我们可以这样做main():
A *pa = new B();
//...
pa->inc(); // implements B::inc();
Run Code Online (Sandbox Code Playgroud)
现在使用boost库的版本
boost::shared_ptr<A> pa = boost::make_shared<B>(2);
//...
pa->inc(); // implements B::inc();
Run Code Online (Sandbox Code Playgroud)
我的问题,在使用该boost版本时,是否可以使用这种方式,即两个版本可以以相同的方式使用,或者我需要做一些额外的事情(我不知道很多内部的提升)