2016-08-30 26 views
5

İşlev prototipleme ve bildirimde farklı parametreler kullanan bir program buldum, bu yüzden temel bir program yaptım.İşlev prototipinde farklı parametre adı

#include <iostream> 
using namespace std; 

void add(int a, int b); 

int main() 
{ 
    add(3,4); 
} 

void add(int c, int d){ 
    int e = c + d; 
    cout << e << endl; 
} 

Bu programı çalıştırıyorum ve çalışıyor. Bu, hem "işlev prototipleme" hem de "işlev bildirme" bölümünde aynı parametre adı için gerekli olmadığı anlamına mı geliyor?

+1

kafa karıştırıcı olabilir. Beyanda 'int' yerine' '' kullanırsınız ve 'include' kelimeniz yanlış yazılmış – Hayt

cevap

9

Evet, bildirimde ve tanımda kullanılan parametrelerin adı aynı olmak zorunda değildir. Bunun yerine, parametrelerin (ve siparişin) tipi aynı olmalıdır. Aslında, özellikle işlev bildirimlerinde parametre isimleri gerekli değildir, hatta tanımında olmasanız bile ihmal edilebilir.

$8.3.5/13 Functions [dcl.fct]:

(vurgu benim)

bir tanımlayıcı, isteğe bağlı olarak, bir parametre adı olarak temin edilebilir; Bir fonksiyon tanımında mevcutsa ([dcl.fct.def]), bir parametreyi adlandırır. [Not: Özellikle, parametre tanımları işlev tanımlarında isteğe bağlıdır ve farklı bildirimlerde bir parametre için kullanılan adları ve bir işlev tanımı aynı olması gerekmez. Bir tanım tanımı olmayan bir işlev beyanında bir parametre adı mevcutsa, onun fonksiyon belirleyicisinin dışında kullanılamaz, çünkü bu, potansiyel kapsamının kapsamıdır ([basic.scope.proto]). - son not]

ve $8.3.5/8 Functions [dcl.fct]:

dönüş, parametre tipi listesi, ref-qualifier, cv-qualifier-seq ve işlev sahip olup olmadığını exception-specification-olmayan atma, ancak varsayılan argümanlar ([dcl.fct.default]) veya istisna belirtimi ([except.spec]) değil, işlev türünün bir parçasıdır.

Parametre türü listesi, adları dahil değil, işlev türünün bir parçası olduğunu unutmayın. Örneğinizdeki yazım hataları

İlgili konular