gpt4 book ai didi

c++ - 带有参数的方法 (const T *&) or (T * &) or(const T * const &) or(T * const &)

转载 作者:行者123 更新时间:2023-11-30 04:57:28 27 4
gpt4 key购买 nike

<分区>

template<class T>
class BNode
{
public:
T data;
BNode *parent, *left, *right;

explicit BNode(T d) : data(d), parent(nullptr), left(nullptr),
right(nullptr)
{}

};

问题 1:这是对的。

template<class T>
void BST<T>::InOrder_(BNode<T> *&s)
{
if (s)
{
InOrder_(s->left);
cout << s->data << ' ';
InOrder_(s->right);
}
}

问题 2:这是错误的。

template<class T>
void BST<T>::InOrder_(const BNode<T> *&s)
{
if (s)
{
InOrder_(s->left);
cout << s->data << ' ';
InOrder_(s->right);
}
}

错误:无法绑定(bind)类型为“const BNode<int>*&”的非常量左值引用' 为 ' const BNode<int>* 类型的右值'

     InOrder_(s->left);
~~~^~~~

问题 3:这是对的。

template<class T>
void BST<T>::InOrder_(BNode<T> *const &s)
{
......
}

问题 4:这是对的。

template<class T>
void BST<T>::InOrder_(const BNode<T> *const &s)
{
......
}

你能告诉我上面的问题为什么是对的还是错的?谢谢!

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