Quick Revision

GK One-Line Question & Answer

15541+ short questions with short answers, covering every category and sub-category on the site — no long articles to scroll through. Good for a fast recap before an exam, or a few minutes of daily practice.

OOP Using C++ → Inheritance 10

What is the output: class A{protected:void f(){cout<<'A';}}; class B:public A{public:void g(){f();}}; B b; b.g();
A
click to copy
What is the output: class A{public:virtual void f(){cout<<1;} virtual void g(){cout<<2;}}; class B:public A{public:void f()override{cout<<3;}}; A*p=new B; p->f(); p->g();
32
click to copy
What is the output: class A{public:int x; A(int v):x(v){}}; class B:public A{public:using A::A;}; B b(42); cout<<b.x;
42
click to copy
What is 'empty base class optimization' (EBO)?
Empty base takes no space in derived object
click to copy
What is the output: class A{public:virtual void f(){cout<<'A';}}; class B:public A{}; class C:public A{public:void f()override{cout<<'C';}}; A*p=new B; p->f();
A
click to copy
What is the output: class A{public:int x=1;}; class B:virtual public A{public:int y=2;}; class C:virtual public A{public:int z=3;}; class D:public B,public C{}; D d; cout<<d.x<<d.y<<d.z;
123
click to copy
What is the output: class A{public:void f(){cout<<'A';} virtual void g(){cout<<'a';}}; class B:public A{public:void f(){cout<<'B';} void g()override{cout<<'b';}}; A a=B(); a.f(); a.g();
Aa
click to copy
What is the output: class A{public:int x; A(int v):x(v){} virtual A* clone(){return new A(*this);}}; class B:public A{public:B(int v):A(v){} B* clone()override{return new B(*this);}}; A*p=new B(5); A*q=p->clone(); cout<<q->x;
5
click to copy
What is the output: class A{public:int x=0; void f(){x++; cout<<x;}}; class B:public A{}; class C:public A{}; B b; C c; b.f(); c.f();
11
click to copy
What is the output: class A{public:virtual int f()const{return 1;}}; class B:public A{public:int f()const override{return 2;}}; const A *p=new B; cout<<p->f();
2
click to copy

OOP Using C++ → Polymorphism 28

What is the output: class A{public:virtual int f(){return 1;}}; class B:public A{public:int f()override{return 2;}}; A *p=new B; cout<<p->f();
2
click to copy
What is the output: class A{public:virtual void f(){cout<<'A';} void g(){f();}}; class B:public A{public:void f()override{cout<<'B';}}; A a; B b; a.g(); b.g();
AB
click to copy
What is the output: class A{public:virtual void f(){cout<<1;}}; class B:public A{public:void f()override{cout<<2;}}; vector<unique_ptr<A>> v; v.push_back(make_unique<B>()); v.push_back(make_unique<A>()); for(auto&p:v) p->f();
21
click to copy
What is the output: class A{public:virtual int f()const=0;}; class B:public A{public:int f()const override{return 42;}}; shared_ptr<A> p=make_shared<B>(); cout<<p->f();
42
click to copy
What is 'static_cast downcast' vs 'dynamic_cast'?
static_cast: unchecked; dynamic_cast: checked at runtime
click to copy
What is the output: class A{public:virtual void f(){cout<<1;}}; class B:public A{public:void f()override{cout<<2;}}; A obj=B(); obj.f();
1
click to copy
What is the output: class A{public:virtual void f(){cout<<'A';}}; class B:public A{public:void f()override{cout<<'B';}}; A &r=*new B; r.f(); delete &r;
B
click to copy
What is the output: class Shape{public:virtual double area()=0;}; class Rect:public Shape{double w,h; public:Rect(double a,double b):w(a),h(b){} double area(){return w*h;}}; Shape*s=new Rect(3,4); cout<<s->area();
12
click to copy
What is the output: class A{public:virtual void f(){cout<<1;} void g(){cout<<2;}}; class B:public A{public:void f()override{cout<<3;} void g(){cout<<4;}}; A*p=new B; p->f(); p->g();
32
click to copy
What is the output: class A{public:virtual string name(){return "A";}}; class B:public A{public:string name()override{return "B";}}; class C:public B{public:string name()override{return "C";}}; A*p=new C; cout<<p->name();
C
click to copy
What is 'virtual function table pointer (vptr)'?
Pointer in each polymorphic object to its class vtable
click to copy
What is the output: class A{public:virtual void f(){cout<<1;}}; class B:public A{public:void f()override{cout<<2;} void g(){A::f(); f();}}; B b; b.g();
12
click to copy
What is the output: class A{public:virtual void f(){cout<<'A';}}; class B:public A{}; class C:public B{public:void f()override{cout<<'C';}}; A*p=new C; p->f();
C
click to copy
What is the output: class A{public:virtual void f(){cout<<'A';} virtual void g(){cout<<'G';}}; class B:public A{public:void f()override{cout<<'B';} using A::g;}; A*p=new B; p->f(); p->g();
BG
click to copy
What is the output: class A{public:virtual int f(){return 0;}}; class B:public A{int x; public:B(int v):x(v){} int f()override{return x;}}; A*p=new B(99); cout<<p->f();
99
click to copy
What is 'dynamic_cast to void*'?
Returns pointer to most-derived object
click to copy
What is the output: class A{public:virtual void f()=0;}; class B:public A{public:void f(){cout<<'B';}}; A*arr[2]={new B,new B}; for(auto p:arr) p->f();
BB
click to copy
What is the output: class A{public:virtual void f(){cout<<1;}}; class B:public A{public:void f()override{cout<<2;}}; void call(A a){a.f();} B b; call(b);
1
click to copy
What is the output: class A{public:virtual void f(){cout<<'A';}}; class B:public A{public:void f()override{cout<<'B'; A::f();}}; A*p=new B; p->f();
BA
click to copy
What is the output: class A{int x; public: A(int v):x(v){} virtual int get(){return x;}}; class B:public A{int y; public: B(int a,int b):A(a),y(b){} int get()override{return A::get()+y;}}; A*p=new B(3,4); cout<<p->get();
7
click to copy
What is the output: class A{public:virtual void f()=0; virtual void g(){f();}}; class B:public A{public:void f()override{cout<<'B';}}; B b; b.g();
B
click to copy
What is the output: class A{public:virtual void f(){cout<<'A';} }; class B:public A{}; class C:public A{}; B b; C c; A*arr[]={&b,&c}; for(auto p:arr) p->f();
AA
click to copy
What is 'virtual dispatch performance cost'?
Indirect call via vptr; possible cache miss; cannot inline
click to copy
What is the output: class A{public:virtual void f(){cout<<1;}}; class B:public A{public:void f()override{cout<<2;}}; A a; B b; A*p=&a; p->f(); p=&b; p->f();
12
click to copy
What is the output: class A{public:virtual void f(){cout<<'A';} void g(){cout<<'G'; f();}}; class B:public A{public:void f()override{cout<<'B';}}; B b; b.g();
GB
click to copy
What is the output: class A{public:virtual void f()=0;}; A *p=new struct B:public A{void f(){cout<<'X';}}{};p->f();
Compile error
click to copy
What is the output: class A{public:virtual void f(){cout<<1;} virtual void g(){cout<<2;} virtual void h(){cout<<3;}}; class B:public A{public:void g()override{cout<<4;}}; A*p=new B; p->f(); p->g(); p->h();
124
click to copy
What is the output: class A{public:virtual void f(){cout<<1;}}; class B:public A{public:void f()override{cout<<2;}}; class C:public A{public:void f()override{cout<<3;}}; function<void()> funcs[]={[]{B().f();},{[]{C().f();}}}; for(auto&fn:funcs) fn();
23
click to copy

OOP Using C++ → Encapsulation 2

What is the output: class A{int x=5; public: int get()const{return x;}}; A a; cout<<a.get();
5
click to copy
What is the output: class A{int x; public: A(int v=0):x(v){} void inc(){x++;} int get()const{return x;}}; A a(10); for(int i=0;i<5;i++) a.inc(); cout<<a.get();
15
click to copy