为何C++不允许内类用圆括号初始化?
目前猜测,和类的构造函数有关联,因为vector的圆括号和string的圆括号初始化不太相同,再加上C++面向对象,类就是一种复合的数据结构,作为整体是可以圆括号初始化的,但类内圆括号不允许圆括号初始化,就可能与构造函数有关系。
https://www.zhihu.com/question/37019538
可以的,。
#include <iostream>
using namespace std;
class A
{
public:
int a;
A(int b) :a(3) {}
void show()
{
cout << a << endl;
}
};
int main()
{
A a1(3);
a1.show();
}
为了避免和函数调用混淆起来。 f(100) 到底是初始化还是函数调用呢?
是因为我们无法避免以下类似情况
class Widget
{
private:
typedef int x;
int z(x);
};
这样的话,就会变为函数声明