gpt4 book ai didi

c++ - C++ 中的模板参数

转载 作者:行者123 更新时间:2023-11-30 02:41:41 24 4
gpt4 key购买 nike

  template <class Object>
class ListNode
{
ListNode( const Object & theElement = Object( ), ListNode * n = NULL )
: element( theElement ), next( n ) { }

Object element;
ListNode *next;

friend class List<Object>;
friend class ListItr<Object>;
};

大家好,我正在为我的数据结构类(class)编写一个程序,我应该使用我的讲师提供的这个 .h 头文件。据我所知, Object 是一个模板参数。有人可以解释为什么 ListNode 构造函数中的 Object 后面有括号吗?

谢谢!

最佳答案

本质上,它是对作为模板参数提供的 Object 类的默认构造函数的调用。此默认构造对象用作 ListNode 构造函数的第一个参数的默认参数值。

这其实是一个谎言,但它很容易理解并且涵盖了大多数情况,所以我把它放在最上面。实际上,它是一个 value initialization Object 类型的对象。如果 Object 是一个具有用户定义的构造函数的类,则值初始化是对默认构造函数的调用。在 Object 是没有用户定义构造函数的类的情况下,值初始化(递归地)定义为所有成员的值初始化。最后,对于原语(int、double、指针等),值初始化是初始化为零。

关于c++ - C++ 中的模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27854371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com