هل من الممكن الإعلان عن فصل دون تنفيذه؟(ج++)
-
22-08-2019 - |
سؤال
أعلم أن الأسئلة تبدو غامضة، لكن لم أتمكن من التفكير في أي طريقة أخرى لصياغتها، ولكن، هل من الممكن القيام بشيء كهذا:
#include<iostream>
class wsx;
class wsx
{
public:
wsx();
}
wsx::wsx()
{
std::cout<<"WSX";
}
?
المحلول
نعم، هذا ممكن. وفيما يلي مجرد تعلن wsx
class wsx;
ويسمى هذا النوع من الإعلان إعلان إلى الأمام، لأنه هو مطلوب عندما تشير فئتين لبعضها البعض:
class A;
class B { A * a; };
class A { B * b; };
واحد منهم يحتاج إلى أن أعلن الأمام ثم.
نصائح أخرى
وهذا هو تعريف الفئة
class wsx
{
public:
wsx();
}
وهذا هو تعريف منشئ
wsx::wsx()
{
std::cout<<"WSX";
}
وهذا هو إعلان الأمام تقول الطبقة سيتم تحديد مكان
class wsx;
في المثال الخاص بك،
class wsx; // this is a class declaration
class wsx // this is a class definition
{
public:
wsx();
}
وهكذا نعم، وذلك باستخدام class wsx;
أنه من الممكن أن يعلن فئة دون تحديد ذلك. يتيح إعلان درجة التي أعلن مؤشرات وإشارات إلى تلك الفئة، ولكن ليس مثيلات الفئة. المترجم يحتاج تعريف الفئة لذلك يعرف مقدار الذاكرة لتخصيص لمثيل للفئة.
نعم.و لكنها لا من الممكن تحديد فئة دون الإعلان عنها.
لأن: كل تعريف هو أيضا إعلان.
وأنت لم تحدد الطبقة. انه ليس لديها أعضاء البيانات، ولكن هذا ليس ضروريا.
ولست متأكدا ما تعنيه. الرمز الذي تم لصقه يبدو الصحيح.