You are using a version without Ads of this website. Please, consider donating:

Why in the following code does box1 only occupy 24 bits even though it has a function in it?

Where is the function stored?

 ``123456789101112131415161718192021222324252627282930313233343536373839404142434445464748`` ``````#include using std::cout; using std::endl; class CBox // Class definition at global scope { public: double m_Length; // Length of a box in inches double m_Width; // Width of a box in inches double m_Height; // Height of a box in inches // Function to calculate the volume of a box double Volume() { return m_Length*m_Width*m_Height; } }; int main() { CBox box1; // Declare box1 of type CBox CBox box2; // Declare box2 of type CBox double boxVolume(0.0); // Stores the volume of a box box1.m_Height = 18.0; // Define the values box1.m_Length = 78.0; // of the members of box1.m_Width = 24.0; // the object box1 box2.m_Height = box1.m_Height - 10; // Define box2 box2.m_Length = box1.m_Length/2.0; // members in box2.m_Width = 0.25*box1.m_Length; // terms of box1 boxVolume = box1.Volume(); // Calculate volume of box1 cout << endl << "Volume of box1 = " << boxVolume; cout << endl << "Volume of box2 = " << box2.Volume(); cout << endl << "A CBox object occupies " << sizeof box1 << " bytes."; cout << endl; return 0; }``````

Output:

 ```Volume of box1 = 33696 Volume of box2 = 6084 A CBox object occupies 24 bytes.```

And also why exactly are class members private by default?
Methods do not require memory because they store no data, they are a set of instructions that get run against an instance of the object.

 And also why exactly are class members private by default?

Please do not re-ask the same questions over and over when they have been answered for you by other members.
Im still just a little confused sorry.
And is this why. I just need a yes or no to clear up my confusion :D

So with private control you can only initialize the member and then after never change it? So its only their just to make sure sometimes you don't misuse it like why consts variables exist?
Uh, should I go delete the answer I just gave you in another thread?

Don't spam us. It is rude.
private is not the same as const.

Private is used so objects outside of the class cannot modify the members. Private is the default because it's the most secure level, security by default. In C++ this is especially important with encapsulation.

So its there for no misuse outside of the class?
sorry duoas.

I like having two opinions on the same thing. It helps for further clarification.

Sorry. I wont ever repost if it feels rude. Sorry!
Yes
Thankyou both!