C++中与Python的__init__相当的是什么?

6

在学习C++编程时,我经常需要在声明类时运行代码来给变量赋值。我知道在Python中可以使用__init__,但在C++中该怎么做呢?


请确保阅读您接受的答案上的评论,因为其中存在问题。 - xaxxon
__init__ 在类被声明时不会运行。它只会在创建该类的新实例时运行。 - el.pescado - нет войне
这就是我想表达的,只是不知道用什么词。 - IDontKnowWhatToPutAsMyUsername
1个回答

9
在C++中,与Python的__init__方法相当的是构造函数。两者的作用都是初始化/构造类的实例以便使用。不过也有一些区别。
  • 在Python中,数据成员是在__init__中初始化的,而在C++中应该使用初始化列表进行初始化。

  • 在C++中,默认情况下,构造函数会链接到父类的默认构造函数,而在Python中,您必须显式调用父__init__,最好通过super()进行调用。

  • C++允许函数重载,这也适用于构造函数。这允许声明具有不同签名(参数列表)的不同构造函数。要在Python中执行相同的操作,您必须将__init__声明为接受*args,**kwargs并根据这些手动分派。

  • 在C++中有特殊类型的构造函数,即默认构造函数复制构造函数移动构造函数

示例

Python:

class Foo:
    def __init__(self, x):
        self.x = x
        print "Foo ready"

C++:

class Foo {
public:
    int x;
    Foo(int x) : x(x)
    {
        std::cout << "Foo ready\n";
    }
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接