कुछ दिन पहले, मैं सी ++ दुनिया में कूदना चाहता था। मैं आधार और व्युत्पन्न वर्ग अवधारणाओं का अध्ययन कर रहा हूं। क्या कोई निम्नलिखित दो कोड स्निपेट के साथ चल रहा है?बेस और व्युत्पन्न कक्षाएं सी ++
class A
{
private:
virtual int GetValue() { return 10; }
public:
int Calculate() { return GetValue()*1.5; }
};
class B: public A
{
private:
virtual int GetValue() { return 20; }
};
int main()
{
B b;
std::cout << b.Calculate() << std::endl;
return 0;
}
उत्पादन 30 है, लेकिन 15
class A
{
private:
int m_data;
public:
A(): m_data(GetValue()) {}
int Calculate() { return m_data*1.5; }
virtual int GetValue() { return 10; }
};
class B: public A
{
public:
virtual int GetValue() { return 20; }
};
int main()
{
B b; A* ap;
ap=&b;
std::cout << ap->Calculate() << std::endl;
return 0;
}
उत्पादन 15 लेकिन 30
उम्मीद थी किसी को समझाने और मुझे तर्क को समझने में मदद कर सकता हूँ है उम्मीद की गई थी? इस अवधारणा पर मेरी सोच में कुछ गड़बड़ है, लेकिन मैं इसे समझने में असमर्थ हूं।
बताएं कि आपने क्यों सोचा था कि आपका कोड उन मानों को देगा। –