Help Please!

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

Where is the function stored?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
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!
Everyone who reads this thread has probably read your other thread as well. You'll get more opinions from the people you want to hear if you don't seem obnoxious about it.

Hope this helps.
Ok thankyou im really sorry.
Topic archived. No new replies allowed.