如果你的MINTINT
is typedef int MYINT
thenMYINT()
不是一个函数,而是int()
一个默认初始化,相当于int y = 0
or int y = int(0)
。
您的第二行,即出于同样的原因cout << MYINT()
为我正确编译。g++ -Wall -ansi -pedantic
但是g++
会抱怨sizeof
以下错误error: invalid application of "sizeof" to a function type
,因为它解释MYINT()
为“调用 int 的默认构造函数”(编辑:这是不正确的)“返回不允许的 MYINT 的函数类型”(编辑:这是正确的答案,见迈克的)。但这与typedef
.
概括:
#include <iostream>
typedef int myint;
int main()
{
int y = myint();
int z = myint(0);
std::cout << y << z; // Will output 0 0
std::cout << std::endl << myint(0) << myint(); // Will output 0 0
std::cout << sizeof(int()); // The error is here; same with sizeof(myint())
}
编辑(再次)
正如评论中所说,这些cout
行对你不起作用,这是因为你可能忘记了include <iostream>
.
编辑
查看 Mike Seymour 的答案,以解释与sizeof
.