احتمالاً توابع عضو به صورت private
یا protected
تعریف شدهان. بنابراین به صورت مستقیم از بیرون کلاس در دسترس نیستن
class C
{
private:
void f(){...};
protected:
void g(){...};
public:
void h(){...};
};
int main()
{
C *c = new C();
c.f(); // اخطار کامپایل
c.g(); // اخطار کامپایل
c.h(); // کامپایل میشه
return 0;
}
یه نکتهی مهم در مورد کلاسها در C++
این هست که همهچی در کلاس به صورت پیشفرض private
هست در صورت که در ساختار (struct
) همهچی به صورت پیشفرض public
هست.
کد زیر رو در نظر بگیرید
struct S
{
int x;
};
class C
{
int x;
};
int main()
{
S s;
s.x = 2; // ok
C c;
c.x = 2; // error
return 0;
}
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)