下面的代码可以说明一切:
默认情况下模板内的基本类型(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
原文链接: https://www.cnblogs.com/visayafan/archive/2011/11/29/2268063.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/37508
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!