在C++11中,类型推断功能可以帮助我们避免在创建shared_ptr实例时重复类型信息。以下是一些示例,说明如何使用类型推断功能来创建shared_ptr实例:
#include<iostream>
#include<memory>
class MyClass {
public:
MyClass(int x) : x_(x) {}
void Print() const { std::cout << "MyClass: " << x_ << std::endl; }
private:
int x_;
};
int main() {
auto ptr = std::make_shared<MyClass>(42);
ptr->Print();
return 0;
}
在这个例子中,我们使用了std::make_shared
函数来创建一个MyClass
对象的shared_ptr。auto
关键字用于自动推断MyClass
的类型,因此我们不需要重复类型信息。
std::shared_ptr
的构造函数:#include<iostream>
#include<memory>
class MyClass {
public:
MyClass(int x) : x_(x) {}
void Print() const { std::cout << "MyClass: " << x_ << std::endl; }
private:
int x_;
};
int main() {
auto ptr = std::shared_ptr<MyClass>(new MyClass(42));
ptr->Print();
return 0;
}
在这个例子中,我们使用了std::shared_ptr
的构造函数来创建一个MyClass
对象的shared_ptr。同样,我们使用auto
关键字来自动推断MyClass
的类型。
需要注意的是,在使用类型推断功能时,我们不需要重复类型信息,这可以提高代码的可读性和可维护性。同时,使用std::make_shared
函数可以避免在创建shared_ptr实例时出现内存泄漏的风险。
领取专属 10元无门槛券
手把手带您无忧上云