C++ 相当于 Python 的 __init__

IDo*_*ame 4 c++ python

在学习用 C++ 编写代码时,在很多情况下,我需要在声明类时运行代码,例如给变量值。我知道在 Python 中你可以只使用__init__,但是我将如何在 C++ 中做到这一点?

el.*_*ado 7

__init__C++中 Python方法的等价物称为构造函数。两者的作用是初始化/构造类的实例以使其可用。不过也有一些不同。

  • 在 Python 中,数据成员在 内部初始化__init__,而在 C++ 中,它们应该使用初始化列表进行初始化。

  • 在 C++ 中,构造函数默认链接到父类的默认构造函数,而在 Python 中,您必须显式调用 parent __init__,最好通过super().

  • C++ 允许函数重载,它扩展到构造函数。这允许声明具有不同签名(参数列表)的不同构造函数。要在 Python 中执行相同的操作,您必须声明__init__为接受*args,**kwargs并基于这些进行手动调度。

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

例子

Python:

class Foo:
    def __init__(self, x):
        self.x = x
        print "Foo ready"
Run Code Online (Sandbox Code Playgroud)

C++:

class Foo {
public:
    int x;
    Foo(int x) : x(x)
    {
        std::cout << "Foo ready\n";
    }
};
Run Code Online (Sandbox Code Playgroud)