在下面的例子中我做了
MyClass a ();
我被告知a实际上是一个返回MyClass的函数,但以下两行都不起作用。
MyClass b = a();
a.a = 1;
那是什么,我该怎么办?
#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;
}
答案 0 :(得分: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();
}