C++相当于Python的__init__
C++ equivalent of Python's __init__
在学习用C++编码时,在很多情况下,当我声明类时,我需要运行代码,例如给变量值。我知道在 Python 中你可以只使用__init__
,但是我该如何在C++中做到这一点?
C++中 Python 的__init__
方法的等价物称为构造函数。两者的作用是初始化/构造可用的类实例。不过,也有一些不同之处。
-
在Python中,数据成员在
__init__
中初始化,而在C++中,它们应该使用初始值设定项列表进行初始化。 -
在C++中,构造函数默认链接到父类的默认构造函数,而在 Python 中,您必须显式调用父
__init__
,最好通过super()
。 -
C++允许函数重载,从而扩展到构造函数。这允许声明具有不同签名(参数列表(的不同构造函数。要在 Python 中执行相同的操作,您必须将
__init__
声明为接受*args,**kwargs
并根据这些进行手动调度。 -
在C++中,有空间类型的构造函数,即默认构造函数,复制构造函数和移动构造函数。
例
蟒:
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 readyn";
}
};
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- GCC对可能有效的代码抛出init list生存期警告
- Python中的for循环与C++有何不同
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从python调用openMP共享库时,未定义opnMP函数
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 我在哪里定义代码来释放在C Python模块init函数中分配的资源