如何在shared_ptr<string>上直接调用string类成员函数?
当然可以直接调用,完全不需要拷贝到临时变量!std::shared_ptr重载了->运算符,它会自动帮你解引用到底层的std::string对象,所以你直接用->访问成员函数就行,比如:
// 初始化一个shared_ptr<string>实例 std::shared_ptr<std::string> sharedPtrStringVar = std::make_shared<std::string>("这是测试字符串"); // 直接调用length()获取长度 size_t strLength = sharedPtrStringVar->length(); // 同样可以调用其他string成员函数,比如判断空、追加内容等 bool isStrEmpty = sharedPtrStringVar->empty(); sharedPtrStringVar->append(",这是追加的内容");
如果你习惯用解引用的写法,也可以先对shared_ptr用*解引用,再用.访问成员,比如(*sharedPtrStringVar).length(),不过显然->的写法更简洁直观。
这种方式完全不需要创建临时字符串变量,直接操作shared_ptr指向的原对象,既节省了内存开销,也避免了字符串拷贝带来的性能损耗,就是你想要的更优实现方式。
另外,正如你提到的,感谢Yksisarvinen的解答,这正是你想了解的内容。
内容的提问来源于stack exchange,提问作者Nerrock
相关产品推荐
相关产品推荐

