gpt4 book ai didi

c++ - 稍后在 C++ 中调用基类构造函数(不在初始化列表中)

转载 作者:IT老高 更新时间:2023-10-28 22:08:07 24 4
gpt4 key购买 nike

我正在继承一个类,我想调用它的一个构造函数。但是,在调用它之前,我必须处理一些东西(不需要任何基类)。有什么办法我可以稍后调用它而不是在初始化列表中调用它?我相信这可以在 Java 和 C# 中完成,但我不确定 C++。

我需要在构造函数上传递的数据以后不能重新分配,所以我不能只是调用一个默认构造函数并在以后初始化它。

最佳答案

Is there any way I can just call it later instead of calling it on the initializer list?

不,你不能。基类构造函数必须在初始化列表中调用,而且必须先调用。

实际上,如果您在此处省略它,编译器只会隐式添加调用。

I believe this can be done in Java and C# but I'm not sure about C++.

C# 和 Java 都不允许这样做。

然而,您可以做的是调用基类构造函数调用的方法作为参数。然后在构造函数之前处理它:

class Derived {
public:
Derived() : Base(some_function()) { }

private:
static int some_function() { return 42; }
};

关于c++ - 稍后在 C++ 中调用基类构造函数(不在初始化列表中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com