2014-10-16 133 views
-1
template<typename Dati> 
class NodoVettore 
{ 
private: 
    Dati valore; 
public: 
    NodoVettore() 
    { 
     valore = Dati(); 
    } 

    NodoVettore(Dati nuovoValore) 
    { 
     valore = nuovoValore; 
    } 
}; 

这两个NodoVettore()构造函数之间的区别是什么? 为什么我应该使用Dati()而不是经典的初始化? 为什么我们在类型名称达提后面的括号:模板类型名初始化

valore =达蒂()

+0

这些问题通过阅读C++文本可以得到更好的回答。 – 2014-10-16 15:48:00

回答

1

你的第一个构造函数是默认构造函数,然后从已告诉我们什么,它只是一些分配(我假设)名为valore的成员变量为Dati类型的默认构造对象。

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

为什么你需要在你的默认构造函数中的Dati括号是因为这就是你如何构造一个对象。

我希望这可以帮助你,但我建议你得到一本关于C++的好书,它涵盖了这些基本原理和更多。