作者:曹衡斌_307 | 来源:互联网 | 2023-10-17 13:43
我在 Python 中有这个类,我试图用 C++ 重新创建它,
class Node: def __init__(self, data = None, next = None):
self.data = data
self.next= next
到目前为止,我已经用 C++ 构建了这个,
.h
#include
#include
class Node {
public:
int value;
Node* next;
Node(int value, Node next) : value(0), next(NULL){
std::cout <<"inside .h" <<"n";
};
};
和 .cpp
Node::Node(int value, Node next) {
this->value = value;
this->next = &next;
}
代码本身让我感到困惑,通常最好的做法是避免在里面编写方法,.h
但它不会让我在没有 的情况下设置默认值{...}
,即我无法输入Node(int value, Node next) : value(0), next(NULL);
我最初预期的内容。似乎我还定义了两个构造函数,鉴于相同的参数,这似乎很奇怪。
在main
它里面不允许我实例化一个对象Node(5)
等等......
我们在 C++ 中有一种新方法来模仿上面的 Python 类吗?
回答
您可以通过提供默认参数以相同的方式执行此操作:
Node(int val = 0, Node* nxt = nullptr) : value(val), next(nxt) {}
这既是默认构造函数,也是带有int
和 指针的构造函数Node
。
作为旁注:
您可能希望使用以下形式,以增加灵活性:
Node(Node* nxt = nullptr, int val = 0) : next(nxt), value(val) {}
这样,您就可以创建(连接)一个Node
默认值:
Node n(&next_node); // a Node instance with default value 0