【问题标题】:Passing arguments to the class constructor from a different constructor? [duplicate]从不同的构造函数将参数传递给类构造函数? [复制]
【发布时间】:2012-09-11 04:16:30
【问题描述】:

可能重复:
c++ call constructor from constructor

我有同一个类的两个构造函数,我希望其中一个构造函数向第二个构造函数发送数据。

我知道如何在 C# 中做到这一点,但我是 C++ 新手,我不知道这是否可能:

class a 
{

public:
a (int x);
a (int x, int b, char g);

};

a :: a(int x) : this(x, 6, 'h')
{

}

【问题讨论】:

  • 您的编译器是否支持 C++11 功能?
  • 如果您使用的是 C++11,请查看我链接到的问题中的第二个答案

标签: c++ constructor


【解决方案1】:

新的 C++11 标准支持此功能(称为委托构造函数)。语法如下:

a::a(int x) : a(x, 6, 'h') {}

如果您的编译器不支持新标准,则需要将常见行为提取到另一个初始化方法中并在构造函数主体中调用该方法。

【讨论】:

  • 谢谢,因为我目前没有使用 c++11,我没有办法这样做吗??
  • 我已经编辑了答案:很遗憾没有。
  • @DavidLimkys 是什么阻止了您使用 C++11 功能?是不是因为你的编译器不支持?
  • 好的,谢谢你的快速回答:D @Mihai Todor 是的,我目前正在使用 mvs 2010。
【解决方案2】:

C++11 可以,但早期版本不行。

通常,您可以尝试将常见的东西放入(非虚拟)成员函数中,然后从您的构造函数中调用它。虽然这不允许您初始化所有内容(仅允许您在构造函数主体中执行的操作,而不是在序言中初始化),但它可能仍然“总比没有好”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2023-04-04
    • 2015-10-11
    • 1970-01-01
    相关资源
    最近更新 更多