此问题在此处已有答案:
Is it true that a default constructor is synthesized for every class that does not define one?(6个答案)
7小时前关闭。
在下列程式码中:`
#include <iostream>
struct MyStruct {
int i = 1;
};
int main() {
MyStruct(some); // some is actually a variable name, it compiles, is it in the
// c++ standard?
std::cout << some.i << std::endl;
}
为什么我可以initialzie
MyStruct(some)`?上面的代码编译和运行
2条答案
按热度按时间nmpmafwu1#
我怀疑第一个代码中的变量“some”是一个变量,当我试图声明一个名为some的变量时,它不会运行。
您没有要示例化的MyStruct的标识符。
这里我将“myStruct”作为“MyStruct”的标识符,还声明了一个名为“some”的变量来检查它是否以这种方式运行,它确实以这种方式运行。
bmp9r5qi2#
声明和定义变量的方式非常复杂。如果你想定义
std::string
和MyStruct
,你应该使用以下方式:std::string s2("initialized value"); MyStruct some
。在第二种情况下,MyStruct
定义了一个构造函数,因此第一种情况下的默认构造函数不再存在,除非显式定义它。因此在第二种情况下,如果要使用一个参数初始化示例,则支持以下方式:
MyStruct some(10);
。此语句调用您编写的构造函数。