static_pointer_cast用于执行基于指针的向下转换(即派生类向基类转换),并且利用了智能指针的特性来确保转换后返回的指针对象被正确管理。下面是一个简单的示例程序,演示了如何使用boost::static_pointer_cast进行指针的向下转换。
#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
class A {
public:
virtual void foo() {
std::cout << "A::foo()" << std::endl;
}
};
class B : public A {
public:
void foo() {
std::cout << "B::foo()" << std::endl;
}
};
int main() {
// 创建一个A类的智能指针
boost::shared_ptr<A> a_ptr = boost::make_shared<A>();
// 将A类的智能指针转换成B类的智能指针,由于实际上a_ptr指向的是A类对象,
// 所以B类指针的操作将受到限制,只能访问A类中定义的接口方法。
boost::shared_ptr<B>