C++ 模板类型名初始化 模板 类NodoVettore { 私人: 达蒂瓦洛雷; 公众: NodoVettore() { valore=Dati(); } 诺多维托(达蒂新华洛尔) { 瓦洛雷=nuovoValore; } };

C++ 模板类型名初始化 模板 类NodoVettore { 私人: 达蒂瓦洛雷; 公众: NodoVettore() { valore=Dati(); } 诺多维托(达蒂新华洛尔) { 瓦洛雷=nuovoValore; } };,c++,templates,initialization,typename,C++,Templates,Initialization,Typename,这两个NodoVettore()构造函数的区别是什么? 为什么我应该使用Dati()而不是经典的初始化? 为什么在中的typename Dati后面有括号: valore=Dati() 您的第一个构造函数是一个默认构造函数,根据您向我们展示的内容,它只是将一些(我假设)名为valore的成员变量分配给一个默认构造的Dati类型的对象 第二个构造函数是一个转换构造函数(我的术语,不是标准的),它接受Dati类型的对象并将其分配给成员变量。我称它为转换构造函数,因为它没有用explicit关键字标记

这两个NodoVettore()构造函数的区别是什么? 为什么我应该使用Dati()而不是经典的初始化? 为什么在中的typename Dati后面有括号:

valore=Dati()


您的第一个构造函数是一个默认构造函数,根据您向我们展示的内容,它只是将一些(我假设)名为valore的成员变量分配给一个默认构造的Dati类型的对象

第二个构造函数是一个转换构造函数(我的术语,不是标准的),它接受Dati类型的对象并将其分配给成员变量。我称它为转换构造函数,因为它没有用
explicit
关键字标记

在默认构造函数中需要Dati后面的括号的原因是,这正是构造对象的方式


我希望这能帮助你,但是我建议你在C++上找到一本好的C++书来覆盖这些基本原理和更多的内容。