1

在下面的例子中,我做

MyClass a ();

有人告诉我 a 实际上是一个返回 MyClass 的函数,但以下行都不起作用。

MyClass b = a();
a.a = 1;

那么什么是a,我能用它做什么?

#include "stdafx.h"
#include "iostream"
using namespace std;

class MyClass {
    public:
        int a;
};

int _tmain(int argc, _TCHAR* argv[])
{
    MyClass a ();
    // a is a function? what does that mean? what can i do with a?

    int exit; cin >> exit;
    return 0;
}
4

1 回答 1

8

我被告知 a 实际上是一个返回 MyClass [...]

那是一个函数声明。它只是声明了一个被调用的函数a并让编译器知道它的存在和它的签名(在这种情况下,函数不接受任何参数并返回一个类型为 的对象MyClass)。这意味着您可以稍后提供该函数的定义

#include "iostream"

using namespace std;

class MyClass {
    public:
        int a;
};

int _tmain()
{
    MyClass a (); // This *declares* a function called "a" that takes no
                  // arguments and returns an object of type MyClass...

    MyClass b = a(); // This is all right, as long as a definition for
                     // function a() is provided. Otherwise, the linker
                     // will issue an undefined reference error.

    int exit; cin >> exit;
    return 0;
}

MyClass a() // ...and here is the definition of that function
{
    return MyClass();
}
于 2013-05-09T18:09:40.257 回答