在使用C ++时,我开始想知道像sizeof(int)
这样的代码是如何工作的。我意识到sizeof
是一个运算符,而不是一个函数,但它仍然让我想知道......像myFunc(double)
这样的代码是合法的吗?你能将int
或MyClass
之类的纯粹类型传递给函数吗?不可否认,我看不到太多申请,但我只是想知道。
答案 0 :(得分:3)
不,你不能。参数是expressions,而C ++类型不是表达式。
模板用于"类型参数",但它们仅在编译时才会出现。 (见上面的@Banex和@clcto。)
答案 1 :(得分:2)
sizeof
之类的运营商之所以有效,是因为语言表明他们会这样做。
并非所有内容都是一个类似函数的构造,您可以重载或重新创建自己。您不能创建自己的带有类型名称的运算符,就像您不能创建自己的基本类型或声明语法一样。
你不能在你的C ++程序中重写sizeof
并在那里使用它(虽然它在编译器中的底层实现通常用C ++编写!但是在另一层抽象中)。
这里没有魔力;只是生活中的事实。