有没有什么好的理由在C++中调用默认构造函数时,一组空的圆括号(括号)无效?
MyObject object; // ok - default ctor
MyObject object(blah); // ok
MyObject object(); // error
Run Code Online (Sandbox Code Playgroud)
我似乎每次都自动输入"()".是不是有一个很好的理由不允许这样做?
c++ constructor c++-faq default-constructor most-vexing-parse
我std::map喜欢这样的:
map<wstring,int> Scores;
Run Code Online (Sandbox Code Playgroud)
它存储球员的名字和分数.当有人获得分数时,我会这样做:
Scores[wstrPlayerName]++;
Run Code Online (Sandbox Code Playgroud)
当在用钥匙将地图元素没有wstrPlayerName它会创建一个,但它的增量前初始化为零或为空,或者它未定义?
我应该每次在增量之前测试元素是否存在吗?
我只是想知道,因为我认为原始类型的东西在创建时总是未定义的.
如果我写的东西如下:
int i;
i++;
Run Code Online (Sandbox Code Playgroud)
编译器警告我,我是未定义的,当我运行程序时,它通常不为零.