רוצה להיות מתכנת
New member
שאלה לגבי קומפילציה של 2 קודים קצרים שונים
1) מדוע בקוד המצ"ב לא מתקיימת דריסה של הפונקציה print ובמקום זאת יש שגיאת קומפליציה? לא הבנתי למה הגדרת ההרשאה כ-private מונעת פניה של אובייקט מסוג C לפונקציה print.
2) לגבי הקוד הבא
לא הבנתי למה השורה
אינה חוקית כאן. הרי על פניו ההרשאה כאן אמורה לאפשר את זה.
1) מדוע בקוד המצ"ב לא מתקיימת דריסה של הפונקציה print ובמקום זאת יש שגיאת קומפליציה? לא הבנתי למה הגדרת ההרשאה כ-private מונעת פניה של אובייקט מסוג C לפונקציה print.
קוד:
#include <iostream>
using namespace std;
class A
{
public:
void print() { cout << "A::print()"; }
};
class B : private A
{
public:
void print() { cout << "B::print()"; }
};
class C : public B
{
public:
void print() { A::print(); }
};
int main()
{
C b;
b.print();
}
2) לגבי הקוד הבא
קוד:
#include<iostream>
using namespace std;
class Base
{
public:
int fun() { cout << "Base::fun() called"; }
int fun(int i) { cout << "Base::fun(int i) called"; }
};
class Derived: public Base
{
public:
int fun(char x) { cout << "Derived::fun(char ) called"; }
};
int main()
{
Derived d;
d.fun();
return 0;
}
d.fun();
אינה חוקית כאן. הרי על פניו ההרשאה כאן אמורה לאפשר את זה.