使用()时有什么区别; vs;在c ++中创建对象时?

时间:2017-04-11 03:13:26

标签: c++ instantiation

在c ++中,写出类似

之类的区别
call

我也是堆叠溢出的新手,所以如果我做错了就告诉我。

2 个答案:

答案 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