在c ++中,写出类似
之类的区别call
我也是堆叠溢出的新手,所以如果我做错了就告诉我。
答案 0 :(得分:3)
当你写:
myclass myobject();
您可能认为您正在创建myclass
类型的新对象,但实际上您声明了一个名为myobject
的函数没有参数,返回类型为myclass
。
如果您想查看,请检查以下代码:
#include <stdio.h>
#include <iostream>
using namespace std;
class myclass
{ public: int ReturnFive() { return 5; } };
int main(void) {
myclass myObjectA;
myclass myObjectB(); // Does NOT declare an object
cout << myObjectA.ReturnFive() << endl; // Uses ObjectA
cout << myObjectB.ReturnFive() << endl; // Causes a compiler error!
return 0;
}
prog.cpp: In function ‘int main()’:
prog.cpp:18:23: error: request for member ‘ReturnFive’ in ‘myObjectB’, which is of non-class type ‘myclass()’
cout << myObjectB.ReturnFive() << endl;
^~~~~~~~~~
答案 1 :(得分:2)
区别与
相同 int a;
和int a();
我很确定你现在明白了。只是为了回答,我在下面解释。
int a; // -> a is a variable of type int
int a(); // -> a is a function returning int with void paramters