从C++构造函数调用其他函数
Calling other functions from a C++ constructor
初始化所有成员变量后,从构造函数的主体调用非虚函数(包括赋值运算符)是否安全?
是的
- 您可以自由调用其他非虚拟成员函数。 如果派生最多的基类提供了您碰巧想要的实现,则可以调用虚函数。
事实上,在 C++11 允许一个构造函数调用另一个构造函数之前,多个构造函数调用支持函数来执行共享初始化的情况并不少见。
在这些情况下可以调用operator=
- 关键是它在分配新状态之前可能尝试的任何清理都将找到要操作的合理值 - 例如,将指针设置为 nullptr
以便delete
是安全的。
请注意,您调用的其他函数中允许导致构造函数退出(即未捕获和抑制)的任何异常都将阻止对象存在 - 与直接从构造函数引发的异常相同。
是的,构造函数可以调用非虚函数。
在调用赋值运算符之前,请确保所有成员都已正确初始化,否则对象将处于不一致状态。
当您想从构造函数调用虚拟函数时,请使用"虚拟构造函数惯用法"。
相关文章:
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 为什么 ADL 的运算符函数行为与其他函数不同?
- 将其他函数中的变量用于主函数C++
- 使用函数打开文件,然后让其他函数利用该文件?
- 如何创建一个函数来执行其中的其他函数
- 是否可以将多个结构作为一个数据包存储在一个函数中,然后传递给其他函数并在那里提取?
- 变量 z 无法从其他函数访问变量 x
- 将 libstdc++ 和其他函数组合到一个库中
- 休眠函数,但不阻止其他函数和代码
- 我的代码只会运行主函数,其他函数不会在C++中编译
- 传递多个参数的功能,该函数将类包含到其他函数
- 仅一个功能的链接错误.在同一类和CPP文件中具有相似签名的其他函数工作正常
- 如果从在其他函数中调用的函数引发异常会发生什么情况
- 为什么在其他函数中声明的函数不参与参数相关查找?
- C++ - 有没有办法只继承一次某些函数,而其他函数在多次继承中多次继承?
- 我应该删除来自其他函数或类方法的指针吗?
- Windows表单如何使用其他函数回调图表信息
- 关于函数调用,我的程序没有读取我的其他函数。为什么?