关于无参构造函数的调用,该如何处理
关于无参构造函数的调用C/C++ code// ptr_fun example#include iostreamusing namespace stdclass Obje
关于无参构造函数的调用
C/C++ code// ptr_fun example#include <iostream>using namespace std;class Object{ public: Object(){}; ~Object(){}; void Function() { cout<<"the function called!"<<endl; }};int main () { Object ob1();//为什么不能这样写? Object ob2; ob1.Function();//编译报错信息为: request for member 'Function' in 'ob1', which is of non-class type 'Object()'| ob2.Function(); return 0;}
[解决办法] Object ob1();//为什么不能这样写?
函数声明
不能加括号
[解决办法]恩,Object ob1(); 会把ob1声明成一个函数的名字了,可以通过编译。ob1.Function();而对于一个函数名是不可以这样调用的
[解决办法]Object ob1();
调用函数的话是没有前面的类型名的。所以这并不是调用构造函数。
这是声明了一个返回Object类型的ob1函数。
[解决办法]就像你调用ob2对象的成员函数是这样的ob2.Function();
并没有这样写void ob2.Function().
再者说构造函数是没有返回值的。
[解决办法] Object ob1();//为什么不能这样
上面的语句不是定义Object类的对象ob1,而是声明一个普通的函数ob1(),此函数的返回值为Object类型。
[解决办法]这是人为的语法规定,没有道理可讲。
那样的写法就是声明了一个名字为ob1的函数,其返回值为Object类型。
[解决办法]声明成函数了