C++ Programming - OOPS Concepts - Discussion

Discussion Forum : OOPS Concepts - General Questions (Q.No. 38)
38.
What happens if the base and derived class contains definition of a function with same prototype?
Compiler reports an error on compilation.
Only base class function will get called irrespective of object.
Only derived class function will get called irrespective of object.
Base class object will call base class function and derived class object will call derived class function.
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
22 comments Page 1 of 3.

Ankit said:   8 years ago
Given answer is correct.

#include <iostream>
using namespace std;
class A
{
public:
void f() { cout << "A plain" << endl; }
};
class B : public A
{ public:
void f() { cout << "B plain" << endl; }
};
int main(){
A a;
B b;
a.f();
b.f();
}
o/p : A plain
B plain

Reason : It does so because methods of both classes are unknown to each other. They do need 'virtual' keyword if u intend to use method overriding i.e. Polymorphism which implemented using references and pointers.
(1)

Khushbu said:   8 years ago
This is wrong only base class is executed bcoj both have same prototype if we call them reverse ie base class as derived or vice versa then what is the difference between them.

Akhil said:   8 years ago
Yes, if you don't give a virtual key word in base class, the function in the base-class gets executed even if you call derived class object. If you use the virtual key word before function in the base class you can call any of the function.

Suyog said:   8 years ago
Please, anybody give me the right answer.

Swapnil said:   8 years ago
If virtual not used so only baser class function is called. If virtual keyword used so both can be called.

Mangesh said:   9 years ago
D option is correct without doubt. I agree with the given answer.

Ramanagarjuna R K said:   9 years ago
Yes, only base class function will be invoked irrespective of an object.

So, the answer is B.

Anisha said:   9 years ago
Yes, it's B. Agree with the above explanation.

Abhishek Verma said:   9 years ago
I think B is the right answer if you want to call a derive class same prototype function you have to use virtual concept.

Priyanka said:   10 years ago
Option B is correct. When we use virtual function for declaring base class then only it will calls to derived version of function as late binding takes place.

If we don't use virtual function for declaring base class then it will calls base class function. Because early binding takes place.


Post your comments here:

Your comments will be displayed after verification.