C++ | Class and Object | Question 5

Assume that an integer and a pointer each takes 4 bytes. Also, assume that there is no alignment in objects.

Predict the output following program.

filter_none

edit
close

play_arrow

link
brightness_4
code

#include<iostream>
using namespace std;
  
class Test
{
    static int x;
    int *ptr;
    int y;
};
  
int main()
{
    Test t;
    cout << sizeof(t) << " ";
    cout << sizeof(Test *);
}

chevron_right


(A) 12 4
(B) 12 12
(C) 8 4
(D) 8 8


Answer: (C)

Explanation: For a compiler where pointers take 4 bytes, the statement “sizeof(Test *)” returns 4 (size of the pointer ptr).

The statement “sizeof(t)” returns 8. Since static is not associated with each object of the class, we get (8 not 12).

Quiz of this Question



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.