#include <iostream>
#include <memory>
using namespace std;
class CTest
{
public:
void print() const
{
cout<<"CTest::print const"<<endl;
}
void print()
{
cout<<"CTest::print"<<endl;
}
};
void TestConstSharePtr(const shared_ptr<CTest> &sp)
{
sp->print();
}
void TestShareConstPtr(const shared_ptr<const CTest> &sp)
{
sp->print();
}
int main()
{
shared_ptr<CTest> sp1(new CTest);
TestConstSharePtr(sp1);
shared_ptr<const CTest> sp2(new CTest);
TestShareConstPtr(sp2);
return 0;
}
const share_ptr<T>的引用,智能指针对象本身是const的,但是其内部指针T指向的对象不是const的,不会调用重载的const函数
share_ptr<const T>的引用,其内部指针指向的对象是const的,会调用重载的const函数
运行结果如图: