gpt4 book ai didi

c++ - 在 C++ 中使用模板类

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:33 25 4
gpt4 key购买 nike

我有一个链表模板可以使用,但我不知道如何使用它或调用成员函数。

template <class Object>
class List {
public:
List();
List(const List & rhs);
~List();

bool isEmpty() const;

void makeEmpty();
ListItr<Object> zeroth() const;
ListItr<Object> first() const;

template <class Object> Object List<Object>::insert(const Object & x, const ListItr<Object> & p);
ListItr<Object> find(const Object & x) const;
ListItr<Object> findPrevious(const Object & x) const;

void remove(const Object & x);
const List & operator=(const List & rhs);
private:
ListNode<Object> *header;
};

是行template <class Object> Object List<Object>::insert(const Object & x, const ListItr<Object> & p);声明成员函数的正确方法?它到底在做什么?我如何调用函数并将值传递给它们以插入或从此列表中删除?

最佳答案

您应该阅读有关模板的教程,因为这些都是相对微不足道的事情。

但是:

模板不是类,它们在编译时生成类。

template<class Object>
Class List {...};

<> 中的类是您将传入的实际类型的占位符。它可以是任何东西。 (注意:你也可以写typename而不是class,是一样的)

但请注意:它不包含对象,它包含对象的类型

您可以像这样创建列表对象:

List<int> list1;
List<double> list2;
List<MyOtherClass> list3;

然后,当您通过“.”访问方法时,它们的行为就像普通对象一样。或“->”运算符

模板参数的类型在类内部是已知的,只要在类中定义内联方法,就不必显式调用 Object 类型的列表

还在模板类中为方法声明另一个模板会导致第二个类型的参数,该参数将由提供给函数的参数推导出来,它们将是独立的(或者实际上名称冲突,我不确定,因为我在我的手机上)

另外:请记住,您不能在 .cpp 文件中定义模板方法,所有带有模板的内容都必须在 .h 文件中,否则链接器会抛出错误

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

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