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
User3: Yeah, it's definitely a tricky one
MA
Martina
1 year ago
User2: I agree, the output does seem a bit unexpected
NO
Novella
1 year ago
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
Yes, the output will be 4John
SE
Serina
1 year ago
I agree, the protected variable y can be accessed in B, so it should be 4John
RY
Ryan
1 year ago
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
That makes sense. So the correct answer is D.
NO
Norah
1 year ago
Yes, the output will be 43 because the z member in B hides the z member in A.
TH
Thaddeus
1 year ago
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
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
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
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
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.