從我的C++教材函數原型和參數強制
函數原型的一個重要特徵是參數強制 - 即,迫使參數由參數聲明中指定適當的類型。例如,即使函數原型指定了一個 雙重參數,程序也可以調用具有整數參數的函數 - 該函數仍然可以正常工作。
所以我tryied
#include <iostream>
// void foo(double);
void foo(double a) {
std::cout << sizeof(a) << std::endl;
}
int main (void){
int a = 1;
std::cout << sizeof(a) << std::endl;
foo(a);
return 0;
}
與或沒有原型正確打印頭4然後 (內部功能)8.
是我的編譯器會檢查函數定義缺少 原型(可能不是嚴格的C++標準,但 也有用)或者我錯過了某些東西?
這裏有什麼困惑? 'main'中有'int','foo'中有'double';他們是不同的大小(在您的平臺上)。 –
我的混淆來自我的教科書聲明,因爲我沒有使用原型 –
我認爲混淆是關於'prototype'這個詞。您將'prototype'理解爲'declaration',但'prototype'是函數的簽名,並且在這裏,您在函數的'definition'中直接定義了'prototype',並且之前的'declaration'是無用的。 – AntiClimacus