C++ <Type> 和<类型*有什么区别>

C++ What's the difference between <Type> and <Type *>

本文关键字:gt lt 什么 区别 类型 Type C++      更新时间:2023-10-16

使用<Type><Type *>有区别吗?

当我尝试做这个

Double_node<Type> *list_head;
list_head = new Double_node <Type>(Type(), nullptr, nullptr);

我没有错误,但当我做时

 Double_sentinel_list<Type *> list;
list = new Double_sentinel_list<Type>();

我得到

错误4错误C2679:二进制"=":找不到接受类型为"Double_setinel_list*"的右侧操作数的运算符

代码:

Double_node<Type> *list_head;

是指向对象Double_node的指针的声明。因此,您可以使用new来分配在堆上创建的对象。

代码:

Double_sentinel_list<Type *> list;

是Double_sentinel_list类型堆栈上对象的声明,其中下一个类型是指向type的某种指针列表
因此,您不能分配在堆上创建的对象。

您需要学习c++的基本语法,以及堆栈、堆和指针之间的区别。

简而言之,类型是不相等的。

当你用new调用构造函数时,它会返回一个

 Double_sentinel_list<Type>*

read:指向模板类型为type的Double_setinel_list的指针。您试图将其分配给的变量是

 Double_sentinel_list<Type*>

read:Double_sentinel_list,模板类型指针指向type。