在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
Declaring non-intrinsic types with () after variable name has different behavior than without. i.e. std::map<int,char>x(); - what's with that?
我有一个成员变量声明:std::map<int,char>x;
在我的头文件中。它可以编译,但当我运行二进制文件时,在进入构造函数之前,我在初始化类时会遇到segfault。如果我将声明更改为std::map<int,char>x();
——也就是说,我只是在变量名后面添加了一个((——它工作得很好,没有segfault。
我不能给出比上面更具体的例子了,但如果有人对此有经验,我很想知道发生了什么
编译器版本为gcc 4.8.5版目标是x86_64-redhat-linux
我意识到这是相当不具体的,但我只是在寻找一个一般的答案。
谢谢。
这是Scott Meyers创造的最令人烦恼的解析。
在标准中,查找歧义分辨率[stmt.ambig].
至于segfault,您需要提供代码(请参阅MRE(来帮助您实现这一点。
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 在C/C++中将变量名定义为__00000001有什么好处吗
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++ - 声明中变量名后面的括号
- 如何使替换 c 函数的变量名成为错误?
- 什么是变量均值'int border = borderType & ~BORDER_ISOLATED'?
- 是否可以创建没有变量名的变量
- fstream库,试图创建一个变量名为(c++)的文件
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 声明具有两种类型的变量:"int char"
- 数组的变量名和该数组的地址有什么区别?
- 如何将变量名设置为字符串?C++
- 如何通过另一个int变量递增int变量
- 如何使用运算符过载添加类变量和INT变量
- 类中具有相同变量名的多重继承
- 如何在从.txt文件中读取时不重复相同的变量名
- 在循环中使用相同的变量名可以吗
- C++保留符号作为C变量名
- 在C++中,在给定的相同作用域内声明相同的变量名