Tanımı ve beyan arasındaki fark nedir?
Başlık olarak her iki anlamını bulamıyorum diyor.
CEVAP
Birbeyannamesitanımlayıcı tanıtır ve kendi türünü açıklar, türü, nesne ya da fonksiyon. Bir bildirimdirderleyici ihtiyacı olan şeybu tanımlayıcı başvurular kabul etmek. Bu beyanlar
extern int bar;
extern int g(int, int);
double f(int, double); // extern can be omitted for function declarations
class foo; // no extern allowed for type declarations
Birtanımaslında başlatır bu tanımlayıcı/uygular.linker ihtiyacı olan şeybu varlıklar için başvurular bağlantı için. Bu tanımlar yukarıda tanımlamalar karşılık vardır:
int bar;
int g(int lhs, int rhs) {return lhs*rhs;}
double f(int i, double d) {return i d;}
class foo {};
Bir tanım bir beyanname yerine kullanılabilir.
Bir tanımlayıcı olabilirilan ettiistediğiniz sıklıkta. Böylece, aşağıdaki C ve C yasal
double f(int, double);
double f(int, double);
extern double f(int, double); // the same as the two above
extern double f(int, double);
Ancak, olmalıtanımlanmıştam bir kez. Sen ve bir yere ilan başvurulan bir şey tanımlamak için unutursanız, o zaman linker için başvurular bağlamak için ne olduğunu bilmiyor ve eksik bir sembol şikayet ediyor. Sana bir şey birden çok kez tanımlarsanız, o zaman linker bilmiyorhangitanımları başvurular bağlamak ve yinelenen simgeleri şikayet ediyor.
Tartışmadan beri ne bir sınıftırbeyannamesivs bir sınıftanımC (diğer sorulara cevaplar ve yorumlar) geçiyor , C standart bir alıntı şuraya yapıştır.
C 03 söylüyor 3.1/2, At
O bir beyanname sürece bir tanımıdır [...] sınıf adı ilan-I aşk [...].
3.1/3 sonra birkaç örnek verir. Aralarında:
[Example: [...] struct S { int a; int b; }; // defines S, S::a, and S::b [...] struct S; // declares S —end example
Özetle: C standardı struct x;
olarak görmektedirbeyannamesive struct x {};
tanım. (Başka bir deyişle,< . em ^"ileri bildirim" bir yanlış isimdiğer formları vardır hiç bu yana C. sınıf bildirimleri)
Onun cevapları bir gerçek bölüm ve ayet çıkardı kim litb (Johannes Schaub) için teşekkürler.
Scala artış var ve val tanımı arasında...
Java Deklarasyonu ve tanımı arasındaki...
Bir URI, URL ve URN arasındaki fark ne...
Aramak ve uygulamak arasındaki fark ne...
@Staticmethod ve @Python classmethod a...