【C++】初始化模板参数对象(zero initialization)
下面的代码可以说明一切:
默认情况下模板内的基本类型(int float ...)是不会自动初始化为0的(不像一般函数/类中),要想实现其自动初始化可以在模板函数中T x = T(); 在类中可以在构造函数列表中: x(), y()....
#include <iostream> using namespace std; template <typename T> void f(const T&){ // T x = T(); //对比可知,此时输出为0,而下面输出为一个未知数 T x; cout<<x<<endl; } template <typename T> class A{ private: T x; T y; T z; public: // A():x(), y(), z(){} void MyPrint(){ cout<<x<<" "<<y<<" "<<z<<endl; } }; int main(int argc, char *argv[]) { f(1); f(1.1); A<int> a; a.MyPrint(); return 0; }
Date: 2011-11-29 20:00:19
HTML generated by org-mode 6.33x in emacs 23
作者:visayafan
出处:http://www.cnblogs.com/visayafan/
本博客文章欢迎转载,转载时请注意标明出处。