如何像在Python中一样在C++中重新创建默认参数?

我在 Python 中有这个类,我试图用 C++ 重新创建它,

class Node:
    
    def __init__(self, data = None, next = None):
        self.data = data
        self.next= next

到目前为止,我已经用 C++ 构建了这个,
.h

#include<stdlib.h>
#include <iostream>

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


以上是如何像在Python中一样在C++中重新创建默认参数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>