相关疑难解决方法(0)

值初始化自动对象?

我正在编写一个模板类,在我的代码中的某一点上,我希望能够在栈上对参数化类型的对象进行值初始化.现在,我正在通过写一些这样的效果来实现这一目标:

template <typename T> void MyClass<T>::doSomething() {
    T valueInitialized = T();
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

此代码有效,但(除非编译器是智能的)它需要不必要的创建和销毁临时T对象.我想写的是以下内容,我知道这是不正确的:

template <typename T> void MyClass<T>::doSomething() {
    T valueInitialized(); // WRONG: This is a prototype!
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有一种很好的方法来初始化自动对象,而不必显式构造临时对象并将其分配给自动对象.可以这样做吗?或者它是T var = T();如此好?

c++ initialization

30
推荐指数
3
解决办法
1054
查看次数

标签 统计

c++ ×1

initialization ×1