Help Please!

Apr 14, 2013 at 11:07pm
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?
Apr 14, 2013 at 11:11pm
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.
Apr 14, 2013 at 11:13pm
Im still just a little confused sorry.
Apr 14, 2013 at 11:14pm
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?
Apr 14, 2013 at 11:22pm
Uh, should I go delete the answer I just gave you in another thread?

Don't spam us. It is rude.
Apr 14, 2013 at 11:24pm
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.

Apr 14, 2013 at 11:29pm
So its there for no misuse outside of the class?
Apr 14, 2013 at 11:30pm
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!
Apr 14, 2013 at 11:30pm
Yes
Apr 14, 2013 at 11:31pm
Thankyou both!
Apr 14, 2013 at 11:32pm
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.
Apr 14, 2013 at 11:33pm
Ok thankyou im really sorry.
Topic archived. No new replies allowed.