面试题答案
一键面试- 临时对象生命周期结束方式:
- 当函数模板执行结束后,创建的类类型临时对象会自动调用其析构函数来结束生命周期。这是C++对象生命周期管理的基本规则,在栈上创建的对象(包括临时对象),当其作用域结束时,会自动销毁。
- 举例说明:
#include <iostream>
template <typename T>
void func() {
T temp; // 创建类类型T的临时对象
// 函数逻辑,这里简单打印信息表示函数执行
std::cout << "Function is running with a temporary object of type " << typeid(T).name() << std::endl;
}
class MyClass {
public:
MyClass() {
std::cout << "MyClass constructor called" << std::endl;
}
~MyClass() {
std::cout << "MyClass destructor called" << std::endl;
}
};
int main() {
func<MyClass>();
return 0;
}
在上述代码中:
func
函数模板创建了类型为T
的临时对象temp
。- 当
func<MyClass>
调用时,MyClass
的构造函数会被调用,输出MyClass constructor called
。 - 当
func<MyClass>
函数执行结束,MyClass
的析构函数会被调用,输出MyClass destructor called
,表明临时对象生命周期结束。