c++11智能指针面试题
时间: 2024-01-03 07:22:47 浏览: 152
以下是一个关于C++11智能指针的面试题的示例:
```cpp
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() {
std::cout << "MyClass constructor called" << std::endl;
}
~MyClass() {
std::cout << "MyClass destructor called" << std::endl;
}
void doSomething() {
std::cout << "Doing something" << std::endl;
}
};
int main() {
std::shared_ptr<MyClass> ptr1(new MyClass);
std::shared_ptr<MyClass> ptr2 = ptr1;
ptr1->doSomething();
ptr2->doSomething();
return 0;
}
```
这个示例演示了如何使用C++11中的`std::shared_ptr`智能指针。在这个示例中,我们创建了一个`MyClass`类的实例,并使用`std::shared_ptr`来管理它的内存。当`ptr1`和`ptr2`都指向同一个对象时,该对象的引用计数为2。当其中一个指针超出作用域时,引用计数减少,直到引用计数为0时,对象的析构函数被调用,内存被释放。
输出结果:
```
MyClass constructor called
Doing something
Doing something
MyClass destructor called
```
阅读全文