Can we have a private virtual method ?
Answers were Sorted based on User's Feedback
Answer / nidhi singh
no, we cann't hav private virtual method as virtual is used
in case of inheritance but private members cannot be
inherited..
Is This Answer Correct ? | 10 Yes | 1 No |
Answer / rajendra gandhi
No, we can't have private vitual method.
Is This Answer Correct ? | 6 Yes | 2 No |
Answer / edward
yes... we can have private virtual method and will not give
any compile time/runtime error. but there is no use of it.
we could not call the method from out side of the class
Is This Answer Correct ? | 5 Yes | 1 No |
Answer / nk
We can have virtual functions as long as we dont call the
function from a base pointer pointing to the base
class/derived class.
If we call then gives error.
The same error can be tested by compiling and running above
example.
Is This Answer Correct ? | 3 Yes | 2 No |
Answer / sriram
We can have the private virtual method. But it can be
accessed only through the derived class not through the
base class.
class A
{
private:
virtual void fun() { std::cout << "A::fun" <<
std::endl; }
};
class B : public A
{
public:
virtual void fun() { std::cout << "B::fun" <<
std::endl; }
};
int main(int argc, char* argv[])
{
A* pa = new A();
((B*)(pa))->fun();
}
Output : A::fun
Is This Answer Correct ? | 4 Yes | 3 No |
Answer / ganesh mishra
yes... we can have private virtual method and will not give
any compile time/runtime error.but when we derive any class
from it and override the virtual function,then the compiler
will throw a compile time error.
//file name is privatever.cpp
#include <iostream>
using namespace std;
class base
{
virtual void fun()
{
cout <<"base class function"<<endl;
}
};
class derive: public base
{
public:
virtual void fun()
{
cout<<"derived class function"<<endl;
}
};
int main()
{
base *pt;
derive *der = new derive;
pt = der;
pt->fun();
return(0);
}
here is the error
privatever.cpp: In function ‘int main()’:
privatever.cpp:6: error: ‘virtual void base::fun()’ is private
privatever.cpp:27: error: within this context
Is This Answer Correct ? | 2 Yes | 1 No |
Answer / gopinath das
Yes , It we can have a private virtual method. It has
nothing to do with inheritance. It only resolve the dynamic
binding . Only difference is that , this method should be
used inside the class defination of the Base .
The derived class may implements the method either
public,private or protected.
Exa:
class A
{
virtual void x(){cout<<"A"<<endl;};
public:
};
class B:public A
{
//virtual void x(){cout<<"B"<<endl;}; // no prob
public:
virtual void x(){cout<<"B"<<endl;};
};
int main()
{
A *a;
B *b=new B;
a=b;
a->fn();
}
Out put:
B
Is This Answer Correct ? | 4 Yes | 7 No |
Describe what an Interface is and how it?s different from a Class.
What is purpose of inheritance?
i am getting an of the type can not convert int to int *. to overcome this problem what we should do?
What is difference between multiple inheritance and multilevel inheritance?
What is polymorphism what is it for and how is it used?
What is abstraction example?
write a c++ code of diagonal matrix.
what is object slicing?
What is the difference between XML Web Services using ASMX and .NET Remoting using SOAP?
how to get the oracle certification? send me the answer
WHY FUCTION OVERLOADING DOSENOT RETURN A RETEN TYPE
features of OOPS
22 Answers Ness Technologies, Satyam,