Deal of The Day! Hurry Up, Grab the Special Discount - Save 25% - Ends In 00:00:00 Coupon code: SAVE25
Welcome to Pass4Success

- Free Preparation Discussions

C++ Institute CPA-21-02 Exam - Topic 7 Question 38 Discussion

Posted by My on Apr 07, 2025 at 03:32 AM

What happens when you attempt to compile and run the following code?

#include

#include

using namespace std;

class A {

int x;

protected:

int y;

public:

int z;

A() { x=1; y=2; z=3; }

};

class B : public A {

string z;

public:

void set() {

y = 4;

z = "John";

}

void Print() {

cout << y << z;

}

};

int main () {

B b;

b.set();

b.Print();

return 0;

}

Suggested Answer: A

Get Premium CPA-21-02 Questions as Interactive Web-Based Practice Test or PDF Real Exam Format Detailed Explanations Instant Access Get Your Practice Test
33 comments · newest first
PH
Phung 10 months ago
The protected variable y is accessible in B, so 4 makes sense.
JO
Joanna 10 months ago
I thought the output would be 23, not 4John.
IR
Irma 10 months ago
Totally agree, it's definitely 4John!
KE
Keshia 11 months ago
Wait, how does it print 4? I thought it would be 2.
TA
Tamar 11 months ago
It prints: 4John
ED
Edmond 11 months ago
I’m confused about the `z` variable in class B. Does it overshadow the `z` in class A? I might lean towards 2John, but I’m not certain.
BE
Benedict 11 months ago
I practiced a similar question where protected members were accessed in derived classes. I feel like it should be 4John.
RO
Ronald 11 months ago
I'm not entirely sure, but I remember something about variable shadowing. Maybe it prints 2John instead?
LU
Luisa 12 months ago
I think the output will be 4John because the `set()` function modifies the protected variable `y` and the `z` in class B.
KA
Kaycee 12 months ago
I'm not entirely sure about this one. There seem to be a few things going on with the variable names and access modifiers. I'll need to work through it step-by-step to figure out the correct output.
JA
Jamal 12 months ago
Okay, I've got this! The key is understanding that the protected member `y` in the base class `A` can be accessed by the derived class `B`. So the output should be `4John`.
LU
Luther 1 year ago
Hmm, I'm a bit confused by the class hierarchy and access specifiers here. I'll need to review my notes on inheritance and think through how the derived class can access the base class members.
SH
Shalon 1 year ago
This looks like a question on inheritance and access modifiers. I'll need to carefully trace the code to understand how the variables and methods are being accessed across the derived class.
IS
Isaac 1 year ago
Wow, talk about a trick question! I'm going to guess C, just because the output seems a bit unexpected. Who knows, maybe the compiler will throw a curveball!
HI
Hildegarde 1 year ago
↳ replying to Isaac
User3: Yeah, it's definitely a tricky one
MA
Martina 1 year ago
↳ replying to Isaac
User2: I agree, the output does seem a bit unexpected
NO
Novella 1 year ago
↳ replying to Isaac
User1: I think it prints: 23
EL
Elise 1 year ago
This is a tricky one, but I'm going with A. The protected `y` is accessible in `B`, and the `z` in `B` hides the `z` in `A`, so it should print 4John.
RA
Ramonita 1 year ago
↳ replying to Elise
Yes, the output will be 4John
SE
Serina 1 year ago
↳ replying to Elise
I agree, the protected variable y can be accessed in B, so it should be 4John
RY
Ryan 1 year ago
↳ replying to Elise
I think it prints: 4John
PR
Princess 1 year ago
I'm pretty sure it's D. The `z` member in `B` hides the `z` member in `A`, so it will print 43.
YU
Yun 1 year ago
↳ replying to Princess
That makes sense. So the correct answer is D.
NO
Norah 1 year ago
↳ replying to Princess
Yes, the output will be 43 because the z member in B hides the z member in A.
TH
Thaddeus 1 year ago
↳ replying to Princess
I think you're right. The code will print 43.
IN
India 1 year ago
Hmm, I think the answer is B. The protected member `y` is accessible in the derived class `B`, so it will print 4John.
WE
Wei 1 year ago
↳ replying to India
Exactly, and the string `z` in the derived class `B` is set to 'John' in the set() function, which is then printed along with the modified value of `y`.
JE
Jean 1 year ago
↳ replying to India
That makes sense. The code snippet provided initializes `y` to 2 in the base class `A`, but it gets changed to 4 in the derived class `B`.
JA
Janna 1 year ago
↳ replying to India
Yes, you are correct. The code will print 4John because the protected member `y` can be accessed and modified in the derived class `B`.
LI
Lizette 1 year ago
↳ replying to India
I think the answer is B. The protected member `y` is accessible in the derived class `B`, so it will print 4John.
EL
Eleni 2 years ago
But doesn't the set() function in class B change the value of y to 4 before printing?
RE
Reynalda 2 years ago
I disagree, I believe the answer is B) It prints: 2John.
EL
Eleni 2 years ago
I think the answer is A) It prints: 4John.
0/2000 characters

Save Cancel