通过构造函数调用中的命名参数分配类变量 C++.

Assigning class variables via named parameters in constructor call in C++

本文关键字:参数 分配 类变量 C++ 函数调用      更新时间:2023-10-16

我来自C#背景。在那里我可以做这样的事情:

Callback callback = new Callback
    {
        src = src,
        callbackPtr = callbackPtr
    };

假设只有一个空的构造函数:

Callback(){}

这两个变量都是公共的。

C++中有类似的东西,还是我必须在这里创建参数化构造函数?

如果Callback是普通旧数据(POD)类型,则可以执行以下操作:

Callback callback = {src, callbackPtr};

它使用结构初始化语法。它假定srccallbackPtr在类定义中按该顺序列出。

这适用于 C++03 和 C++11。在 C++11 中,非 POD 类可以通过定义采用std::initializer_list的构造函数来使用此语法。

你可以做:

Callback* callback = new Callback
    {
        src,
        callbackPtr
    };

假设Callback具有按该顺序具有相同数据类型的字段,并且 - 需要注意的是 - 这些字段必须是公共的。