లో వర్చువల్ ఫంక్షన్ సి ++ మేము ఉత్పన్న తరగతిలో పునర్నిర్వచించే బేస్ క్లాస్లో సభ్యుల ఫంక్షన్. ఈ వ్యాసం మీకు భావనను వివరంగా అన్వేషించడంలో సహాయపడుతుంది. ఈ వ్యాసంలో క్రింది గమనికలు కవర్ చేయబడతాయి,
- వర్చువల్ ఫంక్షన్ అంటే ఏమిటి?
- C ++ లో వర్చువల్ ఫంక్షన్ కోసం నియమాలు
- బైండింగ్ అంటే ఏమిటి?
- ప్రారంభ బైండింగ్
- లేట్ బైండింగ్
- స్వచ్ఛమైన వర్చువల్ ఫంక్షన్
- వియుక్త తరగతి
- వర్చువల్ ఫంక్షన్ కోసం ఉదాహరణ
కాబట్టి సి ++ లోని వర్చువల్ ఫంక్షన్ పై ఈ కథనంతో ప్రారంభిద్దాం
వర్చువల్ ఫంక్షన్ అంటే ఏమిటి?
వర్చువల్ ఫంక్షన్ అనేది బేస్ క్లాస్లో సభ్యుల ఫంక్షన్, ఇది మేము ఉత్పన్నమైన తరగతిలో పునర్నిర్వచించాము. ఇది వర్చువల్ కీవర్డ్ ఉపయోగించి ప్రకటించబడింది. వర్చువల్ ఫంక్షన్ కలిగిన తరగతి వారసత్వంగా పొందినప్పుడు, ఉత్పన్నమైన తరగతి దాని స్వంత అవసరాలకు అనుగుణంగా వర్చువల్ ఫంక్షన్ను పునర్నిర్వచించింది.
సి ++ లోని వర్చువల్ ఫంక్షన్ పై ఈ ఆర్టికల్ తో కదులుతోంది
C ++ లో వర్చువల్ ఫంక్షన్ కోసం నియమాలు:
- అవి ఎల్లప్పుడూ బేస్ క్లాస్లో నిర్వచించబడతాయి మరియు ఉత్పన్నమైన తరగతిలో భర్తీ చేయబడతాయి కాని ఉత్పన్నమైన తరగతిలో భర్తీ చేయడం తప్పనిసరి కాదు.
- వర్చువల్ ఫంక్షన్లను తరగతి యొక్క పబ్లిక్ విభాగంలో ప్రకటించాలి.
- అవి స్టాటిక్ కావు లేదా ఫ్రెండ్ ఫంక్షన్ కూడా మరొక క్లాస్ యొక్క వర్చువల్ ఫంక్షన్ కాదు.
- రన్ టైమ్ పాలిమార్ఫిజం సాధించడానికి పాయింటర్ ఉపయోగించి వర్చువల్ ఫంక్షన్లను యాక్సెస్ చేయాలి.
సి ++ లోని వర్చువల్ ఫంక్షన్ పై ఈ ఆర్టికల్ తో కదులుతోంది.
బైండింగ్ అంటే ఏమిటి?
ఫంక్షన్ల కోసం బైండింగ్ అంటే ఫంక్షన్ కాల్ ఉన్నచోట, కంపైలర్ ఏ ఫంక్షన్ డెఫినిషన్కు సరిపోలాలి అని తెలుసుకోవాలి. ఇది ప్రతి ఫంక్షన్ డిక్లరేషన్ యొక్క సంతకం & తీసుకున్న పనులపై ఆధారపడి ఉంటుంది. అలాగే, ఫంక్షన్ కాల్ మరియు సరైన నిర్వచనాన్ని ఎంచుకోవడం మధ్య ఈ సరిపోలిక జరిగినప్పుడు కంపైలర్ తెలుసుకోవాలి.
పైథాన్లో స్ట్రింగ్ను ఎలా రివర్స్ చేయాలి
సి ++ లోని వర్చువల్ ఫంక్షన్ పై ఈ ఆర్టికల్ తో కదులుతోంది
ప్రారంభ బైండింగ్
ప్రారంభ బైండింగ్ అనేది ఒక దృగ్విషయం, దీనిలో వివిధ ఫంక్షన్ కాల్లకు సరిపోయే నిర్ణయం కంపైల్ సమయంలోనే జరుగుతుంది మరియు కంపైలర్ నేరుగా లింక్ని చిరునామాలతో అనుబంధిస్తుంది. దీనిని స్టాటిక్ బైండింగ్ లేదా కంపైల్-టైమ్ బైండింగ్ అని కూడా అంటారు.
- మనకు తెలిసినట్లుగా మేము ఉన్నత స్థాయి భాషలో కోడ్ వ్రాస్తాము
- అప్పుడు కంపైలర్ దీనిని కంప్యూటర్ అర్థం చేసుకోగలిగే తక్కువ-స్థాయి భాషగా మారుస్తుంది, ఎక్కువగా సంకలనం సమయంలో యంత్ర భాష
- ప్రారంభ బైండింగ్లో, కంపైలర్ నేరుగా ఫంక్షన్ కాల్ సూచనలకు ఫంక్షన్ డిక్లరేషన్ సూచనల చిరునామాను అందిస్తుంది
- పేరు సూచించినట్లుగా, ప్రోగ్రామ్ నడుస్తున్న ముందు చాలా ముందుగానే బైండింగ్ జరుగుతుంది.
ఉదాహరణ
# నేమ్స్పేస్ ఎస్టిడి క్లాస్ జంతువులను ఉపయోగించడం చేర్చండి {పబ్లిక్: శూన్య శబ్దం () {కౌట్<< 'Genric animal sound' << endl } } class Cats: public Animals { public: void sound() { cout << 'Cat meow' <ధ్వని () // ప్రారంభ బైండింగ్ రిటర్న్ 0}
అవుట్పుట్
స్పష్టీకరణలు అయాన్
ఈ ఉదాహరణలో, మేము మాతృ తరగతి జంతువులకు ఒక పాయింటర్ను సృష్టించాము. అప్పుడు a = & c వ్రాయడం ద్వారా, పాయింటర్ ‘a’ క్లాస్ క్యాట్స్ యొక్క ఆబ్జెక్ట్ c ని సూచించడం ప్రారంభించింది.
a -> ధ్వని () - రెండు తరగతులలో ఉన్న ఫంక్షన్ సౌండ్ () ను 'a' పాయింటర్ ద్వారా పిలిచినప్పుడు, మాతృ తరగతి యొక్క ఫంక్షన్ పిలువబడుతుంది, పాయింటర్ తరగతి పిల్లుల వస్తువును సూచిస్తున్నప్పటికీ .
ఎర్లీ బైండింగ్ దీనికి కారణం. చైల్డ్ క్లాస్ యొక్క వస్తువును సూచించే మాతృ తరగతి యొక్క పాయింటర్ ‘ఎ’ అని మాకు తెలుసు. ప్రారంభ బైండింగ్ కంపైల్ సమయంలో జరుగుతుంది కాబట్టి, కంపైలర్ 'a' పేరెంట్ క్లాస్ యొక్క పాయింటర్ అని చూసినప్పుడు, అది పేరెంట్ ఆబ్జెక్ట్ కోసం వెతకకుండా పేరెంట్ క్లాస్ యొక్క 'సౌండ్ ()' ఫంక్షన్తో కాల్తో సరిపోలింది సూచిస్తుంది.
సి ++ లోని వర్చువల్ ఫంక్షన్ పై ఈ ఆర్టికల్ తో కదులుతోంది
లేట్ బైండింగ్
ఆలస్యంగా బైండింగ్లో, కంపైలర్ రన్టైమ్లో వస్తువును గుర్తిస్తుంది మరియు తరువాత సరైన ఫంక్షన్తో ఫంక్షన్ కాల్తో సరిపోతుంది. దీనిని డైనమిక్ బైండింగ్ లేదా రన్టైమ్ బైండింగ్ అని కూడా అంటారు.
పై తరగతిలో ఆలస్యమైన బైండింగ్ బేస్ క్లాస్లో వర్చువల్ కీవర్డ్ని ఉపయోగించడం ద్వారా పరిష్కరించబడుతుంది. పై ఉదాహరణను ఉపయోగించడం ద్వారా ఇది ఎలా జరుగుతుందో చూద్దాం, కానీ వర్చువల్ కీవర్డ్ని మాత్రమే జోడించడం.
ఉదాహరణ
ఏ స్కానర్ క్లాస్ పద్ధతి స్ట్రింగ్ చదువుతుంది?
# నేమ్స్పేస్ ఎస్టిడి క్లాస్ జంతువులను ఉపయోగించడం చేర్చండి {పబ్లిక్: వర్చువల్ శూన్య ధ్వని () {కౌట్<< 'Genric aniaml sound' << endl } } class Cats: public Animals { public: void sound() { cout << 'Cats meow' <ధ్వని () తిరిగి 0}
అవుట్పుట్
వివరణ
ఇక్కడ బేస్ క్లాస్ యొక్క ఫంక్షన్ సౌండ్ () వర్చువల్ గా తయారవుతుంది, అందువలన కంపైలర్ ఇప్పుడు ఈ ఫంక్షన్ కోసం ఆలస్యంగా బైండింగ్ చేస్తుంది. ఇప్పుడు, ధ్వని () ఫంక్షన్ యొక్క ఫంక్షన్ కాల్ రన్టైమ్ వద్ద ఫంక్షన్ నిర్వచనంతో సరిపోతుంది. కంపైలర్ ఇప్పుడు పాయింటర్ ‘ఎ’ ను ఉత్పన్నమైన క్లాస్ క్యాట్స్ యొక్క వస్తువు ‘సి’ గా సూచిస్తున్నందున, ఇది క్లాస్ క్యాట్స్ యొక్క సౌండ్ () ఫంక్షన్ అని పిలుస్తుంది.
సి ++ లోని వర్చువల్ ఫంక్షన్ పై ఈ ఆర్టికల్ తో కదులుతోంది
స్వచ్ఛమైన వర్చువల్ ఫంక్షన్
C ++ లోని స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ అనేది మనకు అమలు లేని వర్చువల్ ఫంక్షన్, మేము దానిని మాత్రమే ప్రకటిస్తాము. డిక్లరేషన్లో 0 ని కేటాయించడం ద్వారా స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ ప్రకటించబడుతుంది.
వర్చువల్ శూన్య ధ్వని () = 0
ఇక్కడ ధ్వని () స్వచ్ఛమైన వర్చువల్ ఫక్షన్.
సి ++ లోని వర్చువల్ ఫంక్షన్ పై ఈ ఆర్టికల్ తో కదులుతోంది
వియుక్త తరగతి
ఒక నైరూప్య తరగతి ఒకటి లేదా అంతకంటే ఎక్కువ స్వచ్ఛమైన వర్చువల్ ఫంక్షన్లతో కూడిన తరగతిగా నిర్వచించబడింది. స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ పైన వివరించిన విధంగా వర్చువల్ సభ్యుల ఫంక్షన్, ఇది అమలు లేదని గుర్తించబడింది. ఏ బేస్ క్లాసులతో సహా తరగతిలో అందించిన సమాచారంతో ఇది అమలు సాధ్యం కాదు. ఒక నైరూప్య తరగతిని వియుక్త బేస్ క్లాస్ అని కూడా అంటారు.
ప్రారంభకులకు ms sql ట్యుటోరియల్
ఉదాహరణ
# నేమ్స్పేస్ STD క్లాస్ ఎంప్లాయీని ఉపయోగించడం చేర్చండి // నైరూప్య బేస్ క్లాస్ {వర్చువల్ Int getSalary () = 0 // స్వచ్ఛమైన వర్చువల్ ఫంక్షన్} క్లాస్ ఎంప్లాయీ_1: పబ్లిక్ ఎంప్లాయీ {int జీతం పబ్లిక్: ఎంప్లాయీ_1 (int s) {జీతం = s} int getSalary () {రిటర్న్ జీతం}} క్లాస్ ఎంప్లాయీ_2: పబ్లిక్ ఎంప్లాయీ {ఇంటెంట్ జీతం పబ్లిక్: ఎంప్లాయీ_2 (ఇంటెంట్ టి) {జీతం = టి} ఇంటెంట్ గెట్సాలరీ () {రిటర్న్ జీతం}} ఇంటెంట్ మెయిన్ () {ఎంప్లాయీ_1 ఇ 1 (5000) ఎంప్లాయీ_2 ఇ 2 (3000) a, ba = e1.getSalary () b = e2.getSalary () cout<< 'Salary of Developer : ' << a << endl cout << 'Salary of Driver : ' << b << endl return 0 }
అవుట్పుట్
వివరణ
తరగతి ఉద్యోగిలోని ‘గెట్సాలరీ ()’ ఫంక్షన్ స్వచ్ఛమైన వర్చువల్ ఫంక్షన్. ఎంప్లాయీ క్లాస్ స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ కలిగి ఉన్నందున, ఇది ఒక నైరూప్య బేస్ క్లాస్.
స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ సబ్క్లాస్లలో నిర్వచించబడినందున, ‘గెట్సాలరీ ()’ ఫంక్షన్ క్లాస్ ఎంప్లాయీ యొక్క రెండు సబ్క్లాస్లలో నిర్వచించబడింది, అంటే ఎంప్లాయీ_1 మరియు ఎంప్లాయీ_2.
సి ++ లోని వర్చువల్ ఫంక్షన్ పై ఈ ఆర్టికల్ తో కదులుతోంది
వర్చువల్ ఫంక్షన్ కోసం ఉదాహరణ
# నేమ్స్పేస్ను ఉపయోగించి చేర్చండి std క్లాస్ బేస్ {పబ్లిక్: శూన్య ఫంక్షన్_1 () {కౌట్<< 'base class function 1n' } virtual void function_2() { cout << 'base class function 2n' } virtual void function_3() { cout << 'base class function 3n' } virtual void function_4() { cout << 'base class function 4n' } } class derived : public base { public: void function_1() { cout << 'derived class function 1n' } void function_2() { cout << 'derived class function 2n' } void function_4(int x) { coutfunction_2 () ptr-> function_3 () ptr-> function_4 ()}
అవుట్పుట్
వివరణ
ఫంక్షన్_1 () ఫంక్షన్ కాల్ కోసం, ఫంక్షన్ యొక్క బేస్ క్లాస్ వెర్షన్ అంటారు, ఫంక్షన్_2 () ఉత్పన్న తరగతిలో భర్తీ చేయబడుతుంది కాబట్టి ఉత్పన్నమైన క్లాస్ వెర్షన్ అంటారు, ఫంక్షన్_3 () ఉత్పన్న తరగతిలో భర్తీ చేయబడలేదు మరియు వర్చువల్ ఫంక్షన్ కాబట్టి బేస్ క్లాస్ వెర్షన్ అంటారు, అదేవిధంగా ఫంక్షన్_4 () భర్తీ చేయబడదు కాబట్టి బేస్ క్లాస్ వెర్షన్ అంటారు.
ఈ విధంగా ‘సి ++ లో వర్చువల్ ఫంక్షన్’ పై ఈ వ్యాసం ముగిసింది. మీరు మరింత తెలుసుకోవాలనుకుంటే, చూడండి విశ్వసనీయ ఆన్లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. ఎడురేకా యొక్క జావా J2EE మరియు SOA శిక్షణ మరియు ధృవీకరణ కోర్సు కోర్ మరియు అధునాతన జావా భావనలతో పాటు హైబర్నేట్ & స్ప్రింగ్ వంటి వివిధ జావా ఫ్రేమ్వర్క్ల కోసం మీకు శిక్షణ ఇవ్వడానికి రూపొందించబడింది.
మాకు ప్రశ్న ఉందా? దయచేసి ఈ బ్లాగ్ యొక్క వ్యాఖ్యల విభాగంలో దీనిని ప్రస్తావించండి మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.