これはできない:
class A
{
public:
A()
{
}
};
A a1();
A a1();
関数プロトタイプのように見えるからです。
しかし、私はこれを行うことができます:
class B
{
public:
B(std::string argument)
{
std::cout << argument;
}
};
B b1("Text");
B b1("Text");
これら 2 つのことは、一部のデータが括弧内に渡されるため、コンパイラが関数プロトタイプではないことを区別できることを除いて、本質的に同じ です。
A の角かっこを省略しなければならない理由はありますか、それともコンパイラが関数定義であると考えているためですか?