C ++:关于对象的一个​​小问题

时间:2014-01-21 11:52:28

标签: c++ class object constructor copy-constructor

我有以下课程:

class aClass {
public:
    aClass():a(0){}
    void print(){cout<<a<<endl;}
private:
    int a;
};

在main()函数中,我意外地创建了一个这样的对象:

aClass obj();

我认为编译器会抛出一个错误,因为它需要调用默认的复制构造函数,但是括号()内部没有参数。有趣的是,根本没有错误。所以我尝试通过调用:

来访问成员函数
obj.print();

现在它抛出了这个错误:

request for member 'print' in 'obj', which is of non-class type 'aClass()'

有人可以向我解释一下吗?什么是已创建的 obj()

2 个答案:

答案 0 :(得分:4)

aClass obj();

这是由它的默认构造函数创建的类aClass的实例。

这是一个函数的函数原型,它不带参数并返回aClass。

答案 1 :(得分:1)

这是一个功能声明。

该语言允许其他函数内的函数声明;效果是在周围的命名空间中声明一个函数,但只是为了使该名称在声明的范围内可用。