gpt4 book ai didi

c++ - 参数构造函数调用调用

转载 作者:搜寻专家 更新时间:2023-10-31 00:00:30 25 4
gpt4 key购买 nike

我对此有些疑惑。当允许默认堆栈分配对象构造作为其他结构的成员变量时,为什么不能参数化构造?是否Most Vexing Parse与此有什么关系?我在 ideone 上也尝试了 C++0X,得到了相同的结果。

struct foo{
foo() {}
foo(int i) {}
};

struct bar{
foo obj; // Allowed
foo obj2(10); // Not Allowed
};

Error: expected ‘,’ or ‘...’ before numeric constant

IdeOne Demo

最佳答案

您指向 Most Vexing Parse 的链接讨论了非成员变量(不是类/结构成员的变量)的实例化。您展示的示例是在结构中声明的成员变量;为此,您通常会在构造函数中初始化它们

struct bar
{
foo obj;
foo obj2;
bar() : obj2(10) {}
};

Most Vexing Parse 问题发生在如下情况:

struct baz
{
baz(int n) {}
};

void foo()
{
baz meow(int());
}

由于您的链接中描述的“最令人烦恼的解析”问题,标识符 meow 似乎是 baz (int) 类型的函数声明。 (乍一看似乎是默认初始化的 int() 实际上只是数据类型 int)

关于c++ - 参数构造函数调用调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058478/

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