gex*_*ide 3 c++ templates initialization default-value
假设我有以下模板
template <typename T>
class{
T t;
};
Run Code Online (Sandbox Code Playgroud)
现在,我想添加一个构造函数,用它的类型的默认值初始化t.也就是说,对于数值类型,t应初始化为0
,对于指针,t应初始化为nullptr
.最后,可能还有其他类型的结构.这里,一个好的初始化将是默认的构造函数(无论如何都会被调用,所以我不必在这里做任何事情).
在结论中,我正在寻找这样的事情:
template<typename T>
class X{
T t;
X() : t(default_value<T>::value);
}
Run Code Online (Sandbox Code Playgroud)
正如我想象中的语法指出的那样,我认为使用某种具有不同特殊性的模板可能会带有默认值.但是如何处理结构和类?由于我已经指定t(...)
,默认构造函数不再是一个选项.
Set*_*gie 12
你可以这样做
X() : t() { }
Run Code Online (Sandbox Code Playgroud)
和/或在C++ 11中
X() : t { } { } // see Johannes Schaub's comments about this
Run Code Online (Sandbox Code Playgroud)
这将初始化(或默认初始化?)t
归结为其类型的默认值,无论是内置的0,数组的一系列(值?默认)初始化,还是使用用户的默认构造函数 -定义的类型.
归档时间: |
|
查看次数: |
5859 次 |
最近记录: |