Virtual Function In C++

JOIN ME
-----
KZread 🎬 / @cppnuts
Patreon 🚀 / cppnuts
COMPLETE PLAYLIST
------------
C++ Tutorial For Beginners: • Introduction To C++
STL (Standard Template Library): • STL In C++
ThreadIng In C++: • Multithreading In C++
Data Structures: • Data Structure
Algorithms: • Binary Search
Design Patterns: • Factory Design Pattern...
Smart Pointers: • Smart Pointer In C++
C++14: • Digit Separator In C++
C++17: • std string_view in C++...
C++ All Type Casts: • static_cast In C++
INTERVIEW PLAYLIST
------------
C++ Interview Q&A: • Structural Padding & P...
C++ Interview Q&A For Experienced: • How delete[] Knows How...
Linked List Interview Questions: • Find Kth Node From Bac...
BST Interview Questions: • Search Element In Bina...
Array Interview Questions: • Reverse An Array
String Interview Questions: • Check String Is Palind...
Bit Manipulation Questions: • Find Set Bit In Intege...
Binary Tree Interview Question: • Invert Binary Tree
Sorting Algorithms: • Bubble Sort
C++ MCQ: • Video
C MCQ: • What printf returns af...
C Interview Questions: • Designated Initializat...
QUICK SHORT VIDEOS
-------------
C++ Short : • C++ Short Videos
C Short : • Shorts C Programming MCQ
In this video we will learn about what is virtual function and how to use it in C++.
NOTES:
1. WHY to use virtual function?
a. To achieve dynamic polymorphism. Which is the ability to call Derived class function using Base class pointer or reference.
2. HOW to use virtual function?
a. By declaring function as virtual in Base class and overriding that function in Derived class.
(Function signature should be same in Base and Dervied class)
b. Declaring a function as virtual in Base class is enough, Derived class function need not to be declared virtual.
c. Virtual functions should be accessed using pointer(*) or reference(&) of Base class type to achieve run time polymorphism.
ADITIONAL NOTES:
1. Virtual functions cannot be static and also cannot be a friend function of another class.
2. A class can have virtual destructor but can't have virtual constructor.
3. There are two types of virtual functions in C++.
a. Virtual Function
b. Pure Virtual Function
#cpp #virtualfunction #programming #interviewquestions #softwareengineering #computerscience

Пікірлер: 69

  • @pinakipb2
    @pinakipb23 жыл бұрын

    After a long time........... Really appreciate your videos.

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Thank you so much 😀

  • @treyquattro
    @treyquattro3 жыл бұрын

    Always good to see new videos from Rupesh! Virtual is a very important topic in C++

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Correct!!

  • @treyquattro

    @treyquattro

    3 жыл бұрын

    @Seth Trenton no, no-one gives a shit about your lies and malware

  • @treyquattro

    @treyquattro

    3 жыл бұрын

    @Eufemia Haeber seems to be sockpuppetry and trolling, I think you mean, you pathetic fake

  • @mansokash2215
    @mansokash22152 жыл бұрын

    very good explanation, thank you, keep them like this detailed

  • @mockingbird3809
    @mockingbird38093 жыл бұрын

    Great video as always, Cppnuts! ;)

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Thanks dude...

  • @bimalthapaliya7134
    @bimalthapaliya71343 жыл бұрын

    Sir, please make a video on pointer to object and object to pointer! We are getting lots of confusion in that portion! PS- always loved your work! Thank you for this series!

  • @ManishPatel-dj7eb
    @ManishPatel-dj7eb3 жыл бұрын

    Nice informative video, It explains all details in easy way. thanks Q1. Which editor you are using ?

  • @ahmedajbna4804
    @ahmedajbna48042 жыл бұрын

    Thank you so much. I was very confused, now I got it.

  • @CppNuts

    @CppNuts

    2 жыл бұрын

    Welcome..

  • @yashsaxena4634
    @yashsaxena46343 жыл бұрын

    Thanks for making it simple.

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Glad it was helpful!

  • @raghuj7097
    @raghuj70973 жыл бұрын

    Super...after a long time...we are happy to see

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Thanks..

  • @Jam18123
    @Jam181232 ай бұрын

    very informative, thank you

  • @abhaybajpai9469
    @abhaybajpai94692 жыл бұрын

    Very Informative video....thanks a lot.....again!!!😁

  • @CppNuts

    @CppNuts

    2 жыл бұрын

    Welcome..

  • @rajeshsola1776
    @rajeshsola17763 жыл бұрын

    Hi, Thanks for sharing great videos, i think one statement can be fine tuned...Instead of saying virtual functions can be called with pointers and references only (which implies can't be called by objects), we can say that if we call with objects directly it'll go by static binding and won't get benefits of runtime polymorphism (or) to get the benefits of dynamic behavior call by pointer/reference..please see

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Thanks man, but did i said this? I think i always added dynamic word with that line.

  • @Vicky-xi9ns
    @Vicky-xi9ns3 жыл бұрын

    Thanks for your c++ series

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Glad you like them!

  • @chitranshsaxena59
    @chitranshsaxena593 жыл бұрын

    Hey, nice video, maybe you can also explain about vtables and stuff

  • @sureshonteru4609
    @sureshonteru46093 жыл бұрын

    Hi Rupesh Thanks a lot for the video , still I have a doubt why Base * b = derived () It's calling base class method, what happens it's storing derived class address but it's calling base class method ,what happens inside and compile time . can you explain

  • @mohammadjadidi233
    @mohammadjadidi2333 жыл бұрын

    Really appreciate your videos....

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Thanks..

  • @amitpaunikar3408
    @amitpaunikar34083 жыл бұрын

    After long time.....good explanation

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Thanks..

  • @ravishsga
    @ravishsga3 жыл бұрын

    Good to see you back Rupesh :) Just one question in which scenario we need to call the derived function with the base class pointer? Why we are making the base class pointer point to the derived object?

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    If you want to create an array of different objects you can make their parent common and have array of pointers of those different object and do some operations on a single array. Let me know if this is not clear, actually I wanted to explain this also in video that why do we need that but I didn't actually find the good example for this.

  • @hritik4807

    @hritik4807

    Жыл бұрын

    @@CppNuts not clear , can you make a video :)

  • @priyaldesai8290
    @priyaldesai82902 жыл бұрын

    Hi, Thank you for sharing the video. Can you please share the link for following vptr and vtable video as well.

  • @CppNuts

    @CppNuts

    2 жыл бұрын

    I prepared notes to teach but i lost it somehow and still i didn't feel like redoing that notes, that was like so much hard work.. Hope i may find courage to redo it and shoot the vid.

  • @abhinavkumar562
    @abhinavkumar5623 жыл бұрын

    I hope that you will continue the dsa series...

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Sure man..

  • @ArjunArjun-vw5fq
    @ArjunArjun-vw5fq3 жыл бұрын

    congrats for 28k.

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Thanks bro..

  • @hunnybunny4723
    @hunnybunny472310 ай бұрын

    So what exactly is the use of this virtual functions concept? In what way is it useful in the real world scenario? We can call derived function by creating derived object ryt, what exactly the need of calling through the base class pointer?

  • @ranjanrajesh08
    @ranjanrajesh08 Жыл бұрын

    Hi Rupesh, i tried coding using reference concept for virtual polymorphism…it is not working exactly the same way…i mean to say using reference if i try to call the fn…by removing virtual keyword in base class, then also last overridden fn gets called instead of base class fn

  • @CppNuts

    @CppNuts

    Жыл бұрын

    Give me the code plz.

  • @ranjanrajesh08

    @ranjanrajesh08

    Жыл бұрын

    @@CppNuts hey Rupesh…my mistake…i must have been doing some mistake…I tried to run the code again and i see it is working as expected…Thanku Rupesh😊

  • @bhupeshpattanaik7150
    @bhupeshpattanaik71503 жыл бұрын

    Thanks ☺️ .... Please guide for competitive coding using CPP

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Sure dude.. Let's complete virtual topic first.

  • @bhupeshpattanaik7150

    @bhupeshpattanaik7150

    3 жыл бұрын

    @@CppNuts ya please that soon ..... Very curious to start

  • @vvpChannel3112
    @vvpChannel31123 жыл бұрын

    What if we have a data member in base class lets say float f=1.2; So, can we access b->f iff Base *b = new Derived ?

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Yes..

  • @sharath5796

    @sharath5796

    3 жыл бұрын

    u have to declare that data member as protected ig

  • @shirishareddy2795
    @shirishareddy27953 жыл бұрын

    why can only achieve polymorphism(virtual function) through pointers or references,but not through object assignment. pl z solve my doubt sir

  • @AJAYKUMAR-gl1vx
    @AJAYKUMAR-gl1vx2 жыл бұрын

    Hi 😊 Can you please explain, why pointer or reference variable is required for late binding?

  • @CppNuts

    @CppNuts

    2 жыл бұрын

    Because late binding itself tells that I will be available later, and what ever comes later you have to work on that and this later thing is handled using pointer or reference, because later only these two make sense. In case of static (current, not the late) meaning you already have the object on which you will work.

  • @AJAYKUMAR-gl1vx

    @AJAYKUMAR-gl1vx

    2 жыл бұрын

    @@CppNuts Thank you 😊

  • @prishaphotography9063
    @prishaphotography90633 жыл бұрын

    Nice👍

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Thanks ✌

  • @prasadsolleti3870
    @prasadsolleti38704 ай бұрын

    Sir please explain one real time example code in virtual function and pure virtual function

  • @adityavaste3732
    @adityavaste37322 жыл бұрын

    That was so an amazing tutorial... But I have one doubt, that why we are saying it as "Run-Time Polymorphism", bcz compiler can easily decide which function he has to call, as we are using "virtual" keyword there, So, at a compile-time, he knows that, "We don't have to call the function in the base class bcz it is using virtual keyword, and we have to call the function from the derived class with the same name", that's simple........... he can easily decide at a compile-time, why he goes with run-time?

  • @CppNuts

    @CppNuts

    2 жыл бұрын

    But it can call base class function also.. that's the point. Base pointer can contain either base object or derived object if it is containing derived object in that case it will call derived class function or if it is holding base class object then it will call base class function. That's why it is run time behaviour because base pointer can contain either base object or derived object so we really don't know no what object it is going have till run time.

  • @jilmon3498
    @jilmon34982 жыл бұрын

    Virtual table ?? Video?

  • @AJAYKUMAR-gl1vx
    @AJAYKUMAR-gl1vx2 жыл бұрын

    class Base{public: virtual f(){}}; class Derived:public Base{public: f(){}}; int main(){Derived d; Base b=d; d.f(); return 0;} Here f() will be early binding or late binding??

  • @vishalchoudhary2913
    @vishalchoudhary2913 Жыл бұрын

    9:50 Please correct you can give body to pure virtual function.

  • @CppNuts

    @CppNuts

    Жыл бұрын

    Yes we can give body to pure virtual function.

  • @lifeisacelebration7233
    @lifeisacelebration72333 жыл бұрын

    Volume is bit less for all videos.

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    Correct, i try to avoid noise, so it become like that, i will work on this sound issue. Thanks..

  • @lifeisacelebration7233

    @lifeisacelebration7233

    3 жыл бұрын

    @@CppNuts thank you for all the tutorials

  • @CppNuts

    @CppNuts

    3 жыл бұрын

    You are welcome..

  • @nikhilkhatri9721
    @nikhilkhatri9721 Жыл бұрын

    *I don't want to become animal!!*

  • @CppNuts

    @CppNuts

    Жыл бұрын

    Good

  • @Mani--ck3xc
    @Mani--ck3xc Жыл бұрын

    hi @CppNuts i am getting this error cannot find virtual: No such file or directory , c:/users/mani.chaitanya.konka/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find virtual: No such file or directory c:/users/mani.chaitanya.konka/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find function: No such file or directory