Multiple Inheritance (Lecture 50)-SWavU8klosU 49.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
 ప్రొగ్రామ్మింగ్  C ++ లో మాడ్యూల్ 35 కు స్వాగతం.
 ఈ మాడ్యూల్ లో, మేము C ++ లో మల్టిపుల్ ఇన్హెరిటన్స్ గురించి మాట్లాడతాము.
 మేము ఇప్పటికే లెన్త్(length) వద్ద C ++ లో ఇన్హెరిటన్స్ మెకానిజం గురించి చర్చించాము; మేము పాలిమార్ఫిక్ హైరర్కీల సందర్భంలో డైనమిక్ బైండింగ్ లేదా పాలిమార్ఫిజం గురించి చర్చించాము.
 అందువల్ల, సి ++ యొక్క అనేక వారసత్వ అంశాలను ప్రత్యేకంగా ఇక్కడ పరిశీలించడానికి ప్రయత్నిస్తాము.
 ఇది కొంతవరకు అభివృద్ధి చెందిన విషయం.
 కాబట్టి మేము అనేక వారసత్వాలను ఉన్నత స్థాయిలో కవర్ చేస్తాము మరియు మీ అందరి కోసం మేము చివరి సమస్యలను ఉపయోగిస్తాము.
 ఈ మాడ్యూల్ అవుట్‌లైన్ మరియు మీరు చూసే ప్రతి స్లయిడ్ యొక్క ఎడమ వైపున అందుబాటులో ఉంటుంది.
 బహుళ వారసత్వం అనేది ఒక నిర్దిష్ట తరగతికి రెండు లేదా అంతకంటే ఎక్కువ బేస్ తరగతులను కలిగి ఉన్న ఒక నిర్దిష్ట వారసత్వం.
 మేము వారసత్వ ప్రాతినిధ్యాన్ని చూశాము, కాబట్టి TA అనేది ఒక విద్యార్థి, దానిని ఎలా ప్రాతినిధ్యం వహించాలో మాకు తెలుసు, మనం చూస్తే, నన్ను క్షమించండి, ఈ భాగాన్ని పరిశీలిస్తే అది TA ఒక విద్యార్థి అని మాకు తెలుసు.
 అదేవిధంగా TA ఒక ఉపాధ్యాయుడు, కాబట్టి దానిని ఇక్కడ సూచిస్తుంది.
 ఇది ఒక TA లేదా టీచింగ్ అసిస్టెంట్ ఒక విద్యార్థి, ఆమె కోర్సులకు హాజరవుతుంది మరియు కొంతవరకు పూర్తి చేయడానికి ప్రయత్నిస్తుంది, అంతేకాకుండా ట్యుటోరియల్ సహాయం మరియు అసైన్‌మెంట్ మూల్యాంకనం వంటి కొన్ని కోర్సులు చేయడానికి ఆమె సహాయపడుతుంది.
 కాబట్టి ఆమె ఉపాధ్యాయులకు సాధారణమైన అనేక ఆపరేషన్లు చేస్తుంది.
 కాబట్టి దీనిని బట్టి, విద్యార్థులు మరియు ఉపాధ్యాయులు ఇద్దరూ TA యొక్క బేస్ క్లాస్ అని చెబుతాము.
 ఇది జరిగినప్పుడు మనకు అనేక వారసత్వ పరిస్థితులు ఉన్నాయని చెబుతాము.
 కాబట్టి, ఇక్కడ మేము అనేక మంది వారసుల యొక్క మరొక ఉదాహరణను చూపిస్తాము.
 ఉద్యోగి అనేది ఒక సంస్థ యొక్క ఉద్యోగులందరూ ఉన్న రూట్ క్లాస్‌తో సమానమైన తరగతి, కాబట్టి మేనేజర్ ISA యొక్క ఉద్యోగి అని మేము చెప్పగలం.
 ఈ మేనేజర్ ఒక ISA ఉద్యోగిని సూచిస్తుంది.
 డైరెక్టర్ ISA ఉద్యోగులు అని కూడా మనం చెప్పగలం.
 అందువల్ల, మేనేజర్ మేనేజ్మెంట్ డైరెక్టర్ కంపెనీ విధానాలను నిర్దేశిస్తుంది.
 అప్పుడు మాకు మేనేజింగ్ డైరెక్టర్ ఉన్నారు, అతను మేనేజర్‌తో పాటు డైరెక్టర్ కూడా.
 అందువల్ల, ఇక్కడ అనేక వారసత్వ పరిస్థితులు ఉన్నాయి.
 ఒకటి కంటే ఎక్కువ వారసత్వం ఉన్నప్పుడు, రెండు విషయాలు ఉన్నాయి. ఒకటి, ప్రతి వ్యక్తి వారసత్వానికి పాల్పడటం. అనేక వారసత్వాలలో, మనం నేర్చుకున్న అన్ని నియమాలను వారసత్వం కోసం ఉపయోగించాల్సి ఉంటుంది. ఉన్నాయి, కానీ అదనంగా కొన్ని ఉండవచ్చు మేము చర్చించాల్సిన సమస్యలు.
 అప్పుడు సాధారణంగా మనకు ఒకటి కంటే ఎక్కువ వారసత్వం ఉంటే, మనకు కొన్ని బేస్ క్లాస్ ఉండటం సాధారణం, ఇది వివిధ తరగతుల మధ్య సాధారణం, ఇవి బహుళ వారసత్వానికి ప్రాతిపదికగా పనిచేస్తాయి.
 కాబట్టి, ఇక్కడ మనం ఒక రకమైన వజ్రాల నిర్మాణాన్ని చూస్తాము, ఇక్కడ మనకు ఉత్పన్నమైన తరగతి యొక్క చివరి ఆకు స్థాయి తరగతి ఉంది, మనకు ఇంటర్మీడియట్ బేస్ క్లాస్ ఉంది, ఇది ఆకు తరగతి. ఉత్పన్నమైన తరగతి వాస్తవానికి వారసత్వంగా కనుగొనబడుతుంది.
 ప్రతిగా, ఈ ఇంటర్మీడియట్ తరగతులు కొన్ని కాంబినేటోరియల్ భావన ద్వారా ప్రత్యేకత కలిగి ఉంటాయి.
 వాస్తవానికి మనం అనేక విధాలుగా వారసత్వంగా పొందుతున్నట్లయితే, ఈ మేనేజింగ్ డైరెక్టర్ ఖచ్చితంగా మేనేజింగ్ మరియు డైరెక్టర్ మానిఫోల్డ్ నుండి వారసత్వంగా పొందారు ఎందుకంటే ఈ రెండింటి మధ్య కొంత సారూప్యత ఉంది.
 అందువల్ల మేనేజర్ మరియు డైరెక్టర్ స్వయంగా కొన్ని సాధారణ లక్షణాలను మరియు కొన్ని సాధారణ కార్యకలాపాలను కలిగి ఉంటారని భావిస్తున్నారు, ఇవి ఉద్యోగి సందర్భంలో ఇక్కడ ప్రదర్శించబడతాయి.
 C ++ లో, బహుళ వారసత్వం లేదా బహుళ వారసత్వం యొక్క నిర్వచనం ప్రకారం ఒక సాధారణ బేస్ తరగతిని కలిగి ఉండటం తప్పనిసరి కాదు, కాని మనకు తరచుగా మొత్తం రాష్ట్రాన్ని సూచించే ఒక సాధారణ బేస్ క్లాస్ ఉంటుంది.
 అందువల్ల, మేము అసలు వాక్యనిర్మాణ వివరణలోకి వెళ్తాము.
 ఉత్పన్నం బేస్ 1 అని, ఉత్పన్నం బేస్ 2 అని, ఇది ఒక సాధారణ దృశ్యం అని మేము చెప్తాము.
 మరియు అది క్లాస్ బేస్ 1 అని మనకు ఉన్నప్పుడు, అది క్లాస్ బేస్ 2, రెండు బేస్ క్లాసులు ఉన్నాయి.
 మరియు మేము ఉత్పన్నమైన తరగతి లేదా గుణకారం వారసత్వంలో కనిపించే నిర్దిష్ట తరగతులను వ్రాస్తాము; పబ్లిక్ బేస్ 1, పబ్లిక్ బేస్ 2.
 ఇంతకుముందు, మాకు ఒకే వారసత్వం ఉన్నప్పుడు, మీరు ఇక్కడ ఆపే ఒకే వారసత్వం ఉంటే, ఇక్కడ మేము కామాను ఉపయోగిస్తాము మరియు తదుపరి బేస్ క్లాస్ రాయడం కొనసాగిస్తాము, ఉత్పన్నం వారసత్వంలో కూడా కనుగొనబడుతుంది.
 నేను 2 బేస్ క్లాసులు ఉన్న చోట ఉదాహరణలు చూపిస్తున్నప్పటికీ, అది 2 బేస్ క్లాసులకు మాత్రమే పరిమితం కానప్పటికీ, నేను చాలా లేదా రెండు లేదా అంతకంటే ఎక్కువ లేదా అంతకంటే ఎక్కువ బేస్ క్లాసులను కలిగి ఉంటాను. హుహ్.
 C ++ లోని ప్రాథమిక వారసత్వ విధానం నా ఉద్దేశ్యం అని మనకు తెలిసినట్లుగా, ISA సంబంధం ప్రజా వారసత్వ పరంగా ప్రాతినిధ్యం వహిస్తుంది మరియు దాని అర్థం ఏమిటో మేము చాలాకాలంగా చర్చించాము.
 అదే సమయంలో సి ++ లో ఇతర రకాల వారసత్వ సంపదలు ఉన్నాయని మనకు తెలుసు, ప్రత్యేకించి ప్రైవేట్ వారసత్వం అని పిలుస్తారు, ఇది బేస్ క్లాస్ సభ్యుల దృశ్యమానతను పెంచుతుంది. ప్రైవేట్ యాక్సెస్‌ను మాత్రమే పరిమితం చేయడం ద్వారా వాటిని ఉత్పన్న తరగతులుగా మారుస్తుంది.
 IS యొక్క అర్థ రూపం వలె ఇది మనకు ఇస్తుందని మేము చూశాము, ఇది మేము ఒక అర్థశాస్త్రంగా వర్తింపజేస్తాము, ఇక్కడ మేము ఒక బేస్ క్లాస్ నుండి ఒక ప్రైవేట్ వారసత్వానికి (వారసత్వం) మారినట్లయితే, మేము ఈ బేస్ అని చెబుతున్నాము తరగతి వాస్తవానికి ఉత్పన్నమైన తరగతులకు వర్తిస్తుంది.
 కాబట్టి మేము ఒకటి కంటే ఎక్కువ వారసత్వాలను చేసినప్పుడు, అవి పబ్లిక్‌గా ఉండటం అవసరం లేదు, అవి మిశ్రమంగా ఉంటాయి, మీరు నిజంగానే వాటిని అన్నింటినీ ప్రైవేట్‌గా కలిగి ఉండగలిగితే, అప్పుడు రెండు బేస్ క్లాసులు (క్లాస్) ఉత్పన్నమైన తరగతిలోని కొన్ని భాగాలను అమలు చేస్తున్నాయని అర్థం. , ఇది పబ్లిక్‌గా ఉంటుంది మరియు ఇది ప్రైవేట్‌గా ఉంటుంది కాబట్టి ఒకవేళ అలా అయితే, ఉత్పన్నం ప్రాథమికంగా బేస్ వన్ నుండి ISA సంబంధం అనే ప్రత్యేకత అని అర్ధం.
 అయితే, క్లాస్ బేస్ రెండు అమలు చేస్తుంది లేదా ఉత్పన్నమైన తరగతిని అమలు చేయడంలో సహాయపడుతుంది, ఇది మన వద్ద ఉన్న ఒక ప్రాథమిక విధానం.
 అందువల్ల, మేము సెమాంటిక్స్ చూడటానికి ప్రయత్నిస్తాము.
 ఈ స్లైడ్‌ను మేము ఇంతకుముందు చేసిన వారసత్వ అర్థాలతో పోల్చాలని నేను సూచిస్తున్నాను.
 మీరు ఒకే వారసత్వం నుండి బహుళ వారసత్వానికి మారినప్పుడు ప్రాథమిక లక్షణాలు ఒకే విధంగా ఉంటాయి.
 అందువల్ల, ఉత్పన్నమైన తరగతి ఇప్పుడు వారసత్వంగా అన్ని బేస్ తరగతుల డేటా సభ్యులందరినీ వారసత్వంగా పొందుతుంది.
 ఇది కేవలం బేస్ క్లాస్ మాత్రమే కాదు, ఇది అన్ని బేస్ క్లాసుల యొక్క అన్ని డేటా సభ్యులను వారసత్వంగా వారసత్వంగా పొందుతుంది మరియు ఇది కొత్త డేటా సభ్యులను జోడించగలదు.
 ఇది అన్ని బేస్ క్లాసుల యొక్క అన్ని సభ్యుల ఫంక్షన్లను వారసత్వంగా తిరిగి ఇస్తుంది.మరియు అది ఏదైనా బేస్ క్లాస్ లేదా ఏదైనా బేస్ క్లాస్ యొక్క ఏదైనా సభ్యుల ఫంక్షన్ (ఫంక్షన్) ను భర్తీ చేయగలదు. K ఏదైనా ఫంక్షన్‌ను ఓవర్‌లోడ్ చేయగలదు.
 ఇవన్నీ అంతకుముందు, చాలా బేస్ క్లాసులకు ఈ సూచన లేదు, కాబట్టి సెమాంటిక్స్‌కు ఇది లేదు, కానీ ఇప్పుడు చాలా బేస్ క్లాసులు ఉన్నందున, అవన్నీ సాధ్యమవుతాయి.
 కాబట్టి, వారసత్వం అంటే ప్రతి బేస్ తరగతుల యొక్క అన్ని లక్షణాలు మరియు కార్యకలాపాలు వారసత్వంగా కనుగొనబడతాయి మరియు తగిన ఓవర్‌లోడ్ లేదా ఓవర్‌రైడ్ కావచ్చు.
 యాక్సెస్ స్పెసిఫికేషన్ ప్రైవేట్, ప్రైవేట్, బేస్ క్లాస్‌కు పూర్తిగా పరిమితం చేయబడిన అదే అర్థాన్ని కలిగి ఉంటుంది.
 అందువల్ల, ఉత్పన్నమైన తరగతి ఏ బేస్ క్లాస్ యొక్క ప్రైవేట్ డేటా సభ్యులను యాక్సెస్ చేయదు.
 నేను బేస్ క్లాస్ యొక్క కొంతమంది డేటా సభ్యుల కోసం రక్షించబడితే, ఆ డేటా సభ్యులు ఉత్పన్నమైన తరగతి (తరగతి) లో అందుబాటులో ఉంటారు.
 ష్టి మరియు విధ్వంసం యొక్క సందర్భంలో, సృష్టి యొక్క సందర్భంలో మనం చూస్తాము.
 అన్ని బేస్ క్లాస్ వస్తువులు సృష్టించబడాలి, ఎందుకంటే అన్ని బేస్ క్లాస్ వస్తువులు ఉత్పన్నమైన క్లాస్ ఆబ్జెక్ట్‌లో భాగమవుతాయి.
 ఇప్పుడు, మనకు రెండు లేదా అంతకంటే ఎక్కువ బేస్ క్లాసులు ఉన్నాయి, అవి ఉత్పన్నమైన తరగతి నుండి తీసుకోబడ్డాయి.
 అందువల్ల ఈ బేస్ క్లాసుల కన్స్ట్రక్టర్లు అమలు చేసే క్రమాన్ని కూడా మనం అర్థం చేసుకోవాలి.
 కాబట్టి ఈ జాబితా మనం చూసే విధంగా ఉంటుంది మరియు అది విధ్వంసం యొక్క క్రమంలో వచ్చినప్పుడు మునుపటి తరగతి నాశనం చేయబడిందని మనం చూసిన అదే సూత్రం, అప్పుడు బేస్ క్లాస్ నాశనం అవుతుంది., చాలా బేస్ క్లాస్ వస్తువులు ఉన్నందున .
 కాబట్టి అవి మొదట నిర్మించిన రివర్స్ క్రమంలో నాశనం చేయబడతాయి.
 ఇది బహుళ వారసత్వం కోసం సెమాంటిక్స్ యొక్క సారాంశం.
 దీనికి ఉదాహరణల ద్వారా వెళ్ళేటప్పుడు మరికొన్ని వివరాలు ఉన్నాయి.
 మేము డేటా సభ్యుల నిర్దిష్ట సెమాంటిక్స్‌తో ప్రారంభిస్తాము.
 అందువల్ల ఇది అన్ని బేస్ క్లాసుల యొక్క అన్ని డేటా సభ్యులను వారసత్వంగా వారసత్వంగా పొందింది మరియు కొత్త డేటా సభ్యులను జోడించగలదు.
 ఇప్పుడు లేఅవుట్ సందర్భంలో, లేఅవుట్ గురించి మేము చర్చించాము, లేఅవుట్లోని బేస్ క్లాస్ నుండి వారసత్వంగా ఉత్పన్నమైన తరగతి కనుగొనబడితే అది బేస్ క్లాస్ యొక్క వస్తువుల ఉదాహరణను కలిగి ఉంటుంది.
 ఇప్పుడు, చాలా బేస్ క్లాసులు ఉన్నందున, ప్రతి బేస్ క్లాస్‌కు ఒక ఉదాహరణ ఉంటుంది.
 మళ్ళీ, సి ++ కొన్ని సింగిల్ వారసత్వం విషయంలో బేస్ క్లాస్ ఉదంతాల సాపేక్ష స్థానానికి హామీ ఇవ్వదు.
 అవి ఎలా అమర్చబడతాయి అనేది మొదటి బేస్ క్లాస్ ఆబ్జెక్ట్ అవుతుందా లేదా అప్పుడు ఉత్పన్నమైన క్లాస్ ఆబ్జెక్ట్ సభ్యుడు అవుతుందా మరియు అదేవిధంగా, నిర్దిష్ట ఆర్డర్ ప్రామాణికం ద్వారా ఇవ్వబడదు.
 మేము ఉదాహరణలో చూస్తే, మీకు ఇద్దరు సభ్యులు i మరియు డేటా ఉన్న బేస్ క్లాస్ బి 1 ఉంది.
 నాకు ఇద్దరు సభ్యులతో మరో బేస్ క్లాస్ బి 2 ఉంది; J మరియు డేటా.
 మరియు నాకు బేస్ 1 మరియు బేస్ 2 నుండి ఉద్భవించిన ఉత్పన్న తరగతి ఉంది మరియు ఇది ఒక సభ్యుడిని జతచేస్తుంది.
 నేను బేస్ 1 రకం వస్తువును పరిశీలిస్తే, దానికి ఒక సభ్యుడు i మరియు ఒక సభ్యుల డేటా ఉంటుంది, నేను బేస్ 2 ఉత్పన్నమైన క్లాస్ క్లాస్ యొక్క వస్తువును పరిశీలిస్తే, దీనికి ఉదాహరణ ఏమిటంటే దీనికి ఒక సభ్యుడు j మరియు డేటా జరుగుతుంది .
 కాబట్టి మేము ఉత్పన్నమైన క్లాస్ ఆబ్జెక్ట్‌ను నిర్మిస్తున్నప్పుడు బేస్ 1 ఆబ్జెక్ట్ యొక్క ఒక ఉదాహరణ ఉంటుంది, ఇది ఒక క్లాస్‌లో బేస్ 2 క్లాస్ యొక్క ఉదాహరణను కలిగి ఉంటుంది మరియు ఉత్పన్నంలో మన వద్ద ఉన్న డేటా సభ్యులు, పాస్ అవుతారు.
 కాబట్టి, ఇది మన వద్ద ఉన్న డేటా సభ్యుల సెమాంటిక్స్ యొక్క ప్రత్యక్ష పొడిగింపు లేదా వారసత్వ పరంగా మనకు ఉన్న లేఅవుట్ యొక్క సెమాంటిక్స్ అని మీరు స్పష్టంగా చూడవచ్చు.
 వాస్తవానికి, నేను చెప్పినట్లు కొన్ని ప్రతికూలతలు ఉండవచ్చు.
 ఉదాహరణకు, మీరు ఇక్కడ చూడగలిగినట్లుగా, బేస్ 1 సభ్యుల డేటాను ప్రకటించింది మరియు బేస్ 2 కూడా అదే పేరుతో సభ్యుడిని కలిగి ఉంది.
 బేస్ క్లాస్ ఉత్పన్నమైన తరగతి నుండి స్వతంత్రంగా ఉన్నందున, వారికి ఒకే పేరుతో సభ్యులు ఉండరని మీరు నియంత్రించలేరు.
 వారు ఒకే పేరుతో సభ్యులను కలిగి ఉన్నప్పుడు వస్తువు ఉద్భవించింది.ఈ వస్తువుకు ఒకే పేరుతో ఇద్దరు డేటా సభ్యులు ఉన్నారు.
 నా వస్తువు D నుండి ఉద్భవించిందని నేను చెబితే, నేను ఉత్పన్నమైన డేటాను వ్రాయాలనుకుంటున్నాను, ఎందుకంటే నేను ఇక్కడ వ్రాయడానికి అధికారం కలిగి ఉన్నాను ఎందుకంటే డేటా ఇక్కడ భద్రపరచబడింది మరియు ఇక్కడ రక్షించబడింది కాబట్టి ఉత్పన్న తరగతి వారికి ప్రాప్యత ఉంది.
 నేను వ్రాయడానికి ప్రయత్నిస్తే కంపైలర్ నేను అయోమయంలో ఉన్నానని చెప్తుంది, ఎందుకంటే ఒకే పేరుతో ఇద్దరు సభ్యులు ఉన్నారు.
 ఇది అస్పష్టతకు సంబంధించిన విషయం కాబట్టి రెండు బేస్ క్లాసులు రెండు మరియు బేస్ క్లాసులు ఒకే పేరుతో డేటా సభ్యులను కలిగి ఉంటే, ఆ అస్పష్టతను పరిష్కరించడానికి బాధ్యత ప్రోగ్రామర్ లేదా డెరైవ్డ్ క్లాస్ (క్లాస్) యొక్క డిజైనర్ మీద ఉంటుంది.
 తరగతి పేరు అర్హత ఉన్న సభ్యులను మీరు స్పష్టంగా సూచించాలి.
 ఇది కంపైలర్ చేత ఆమోదయోగ్యం కాదు, కానీ నేను d వ్రాయగలను.
 బేస్ 1 :: డేటా, నేను దీనిని వ్రాస్తే అది డేటా సభ్యుడు అవుతుందని అర్థం లేదా డేటా అది సభ్యుల వస్తువులో ఉంటే అది 
 నేను d.base2 :: డేటాను వ్రాస్తే, ఈ డేటా సభ్యుడు అని అర్ధం ఎందుకంటే రిజల్యూషన్ అదనంగా చేయవలసి ఉంది.
 ఇది బహుళ సంక్లిష్టత సందర్భంలో సంభవించే అదనపు సంక్లిష్టత.
 ఇప్పుడు, మేము సభ్యుల ఫంక్షన్లకు వెళ్తాము - ఓవర్రైడ్లు మరియు ఓవర్లోడ్లు.
 అన్ని సభ్యుల ఫంక్షన్లు అన్ని బేస్ క్లాసుల నుండి వారసత్వంగా వచ్చాయని నేను ఇప్పటికే చెప్పినట్లుగా మరియు మీరు బేస్ సభ్యుల నుండి సభ్యుల ఫంక్షన్ వరకు ఏదైనా సభ్యుల ఫంక్షన్‌ను భర్తీ చేయవచ్చు. ఓవర్‌లోడ్ చేయవచ్చు.
 మరియు స్టాటిక్ మెంబర్ ఫంక్షన్లు మరియు ఫ్రంట్ ఫంక్షన్ల వంటి ఒకే వారసత్వంలో బేస్ క్లాస్ ద్వారా కూడా వారసత్వంగా కనిపించదు.
 మేము ఒక ఉదాహరణను పరిశీలిస్తే, ఒకే బేస్ క్లాసులను జాగ్రత్తగా చూడండి; బేస్ క్లాస్ బేస్ 1, క్లాస్ బేస్ 2 మరియు బేస్ డెరివేటివ్ బేస్ 1 మరియు బేస్ 2 లో ప్రత్యేకత.
 ఇక్కడ, నాకు రెండు సభ్యుల విధులు మరియు G ఉన్నాయి, మరియు ఇక్కడ బేస్ 2 లో నాకు సభ్యుల ఫంక్షన్ ఉంది.
 మరియు నేను చేసినది ఉత్పన్న తరగతిలో f.
 నేను అదే సంతకంతో సభ్యుల ఫంక్షన్‌ను చేర్చుకున్నాను అంటే అది అతిక్రమిస్తున్న సందర్భం.
 కాబట్టి, ఉత్పన్నమైన తరగతి f1 నుండి f సభ్యుల ఫంక్షన్‌కు భర్తీ చేస్తుంది.
 బేస్ 1 లో సభ్యుల ఫంక్షన్ G కూడా ఉంది మరియు ఉత్పన్నమైన తరగతికి G అనే పేరుతో ఏ సభ్యుల ఫంక్షన్ గురించి ప్రస్తావించబడలేదు, కాబట్టి ఈ G కేవలం వారసత్వంగా కనుగొనబడుతుంది మరియు దీనిని ఉపయోగించగలుగుతారు
 మరియు అది g ను ఉపయోగించినప్పుడు, ఇది బేస్ క్లాస్ యొక్క బేస్ 1 యొక్క g సభ్యుల పనితీరును సూచిస్తుంది.
 బేస్ క్లాస్ 2 లో సభ్యుల ఫంక్షన్ H ఉంది మరియు ఉత్పన్నమైన తరగతి వేరే సంతకంతో సభ్యుల ఫంక్షన్ H ను పరిచయం చేస్తుంది.
 ప్రభావం ఏమిటో మాకు తెలుసు, ఈ h పూర్ణాంకాన్ని తీసుకుంటున్న కొత్త h ఉత్పన్నం :: h, base2 :: h ని దాచిపెడుతుంది మరియు మీరు ఇప్పుడు స్ట్రింగ్ పరామితితో ఉత్పన్నమైన క్లాస్ ఆబ్జెక్ట్ కోసం h ని కాల్ చేయగలరు.
 అందువల్ల ఇది ఓవర్‌లోడింగ్ కేసు.
 క్రొత్త సభ్యుల ఫంక్షన్ ఇ ను ఉత్పన్నమైన తరగతిలోని కిట్టికి చేర్చవచ్చు మరియు వాడవచ్చు.
 ఈ సందర్భంలో, మనకు సి డాట్ ఎఫ్ 1 చేస్తే మనకు ఉత్పన్నమైన క్లాస్ ఆబ్జెక్ట్ ఉంటే, అప్పుడు బేస్ 1 :: ఎఫ్ ఓవర్రైడ్ (ఓవర్రైడ్) ఎందుకంటే ఉత్పన్నమైన క్లాస్ (క్లాస్) లోని ఎఫ్ ఫంక్షన్ (ఫంక్షన్) అని పిలుస్తారు. .
 మేము సి డాట్ గ్రా అని చెబితే అది బేస్ 1 యొక్క సభ్యుల ఫంక్షన్ అవుతుంది ఎందుకంటే ఇది వారసత్వంగా వారసత్వంగా వస్తుంది, మనం సి డాట్ హెచ్ అని పిలిస్తే, ఇక్కడ నాకు స్థిరమైన నాలుగు స్టార్ టైప్ పారామితులు ఉన్నాయి. ఇది ఉపయోగించబడుతుంది, ఇది స్వయంచాలకంగా చేర్చబడుతుంది.
 వైర్.
 అందువల్ల ఉత్పన్నంలో ఓవర్‌లోడ్ చేసిన H ఫంక్షన్ (ఫంక్షన్) ను బేస్ క్లాస్ ఫంక్షన్ (ఫంక్షన్) అని పిలవరు ఎందుకంటే ఇది దాగి ఉంది, మరియు నేను సి డాట్ ఇ అని అక్షరంతో చెబితే అది E సభ్యుల ఫంక్షన్ (ఫంక్షన్) అని పిలుస్తుంది. తరగతిలో పరిచయం చేయబడింది.]
 ఇది ఓవర్‌రైడింగ్ మరియు ఓవర్‌లోడింగ్ యొక్క మూలం కథ, ఇది ఖచ్చితంగా జరుగుతుంది మరియు ఖచ్చితంగా డేటా సభ్యుడిలాగా 2 బేస్ క్లాస్‌లకు ఒకే పేరు ఉన్న ఫంక్షన్ ఉందని మీ మనస్సులో జరుగుతోంది.
 2 బేస్ తరగతుల సభ్యుల పనితీరుకు సాధారణ పేరు ఉంటే?
 కాబట్టి ఈ స్లైడ్‌లో, మళ్ళీ నాకు బేస్ 1, బేస్ 2 ఉందని స్పష్టం చేద్దాం, ఉత్పన్నమైన తరగతి అదే బేస్ క్లాసుల నుండి ఉద్భవించింది.
 చేయబడుతున్న వ్యత్యాసం ఏమిటంటే, నేను ఇక్కడ F ఉన్నాను మరియు నేను ఇక్కడ బేస్ 1 మరియు బేస్ 2 రెండింటిలో ఉన్నాను మరియు వారి సంతకాలు ఒకే విధంగా ఉన్నాయి.
 నేను ఇక్కడ బేస్ 1 లో నివసిస్తున్నాను, నేను ఇక్కడ బేస్ 2 లో నివసిస్తున్నాను. వారి సంతకాలు భిన్నంగా ఉంటాయి.
 తరువాతి క్షణంలో ఈ భాగాన్ని విస్మరించండి.
 ఈ భాగాన్ని విస్మరించడానికి మీకు సభ్యుల ఫంక్షన్ లేదని మేము ఉత్పన్న తరగతిలో చెప్పాము, మీరు ఇప్పుడు దానిని పరిగణించకూడదు.
 ఇప్పుడు, నేను సి డాట్ ఎఫ్ వ్రాయడానికి ప్రయత్నిస్తాను. సి డాట్ ఎఫ్ అంటే ఏమిటి? ఈ బేస్ 1 డాట్ ఎఫ్; బేస్ 1 :: ఎఫ్ లేదా ఇది బేస్ 2 కోలన్ కోలన్ ఎఫ్ మీకు తెలుసుకోవటానికి మార్గం లేదు ఎందుకంటే దీనికి ఎఫ్ యొక్క రెండు వెర్షన్లు వచ్చాయి.
 సి డాట్ గ్రా అంటే ఏమిటి? నేను పరామితి 5 ను ఆమోదించాను, కంపైలర్ దాని బేస్ 1 :: g అని పరిష్కరించగలదని ఆశిస్తున్నాను, ఎందుకంటే క్షమించండి ఎందుకంటే ఇక్కడ ఒక చిన్న రకం ఉంది, అది పూర్ణాంకంగా ఉండకూడదు, అది పూర్ణాంకంగా ఉండాలి.
 నేను సి డాట్ జి 5 అని చెబితే, బేస్ 2 :: జి అని పిలవాలని నేను ఆశిస్తున్నాను, కాని దురదృష్టవశాత్తు కంపైలర్ అలా చేయలేడు.
 ఇది చేయలేకపోవడానికి కారణం, సర్ఛార్జ్ ఒకే పేరు ఖాళీల మధ్య మాత్రమే పరిష్కరించబడుతుంది.
 మీకు రెండు వేర్వేరు నేమ్‌స్పేస్‌లు ఉంటే, కంపైలర్‌కు పేర్లు ఏమిటో ట్రాక్ లేదు.
 అందువల్ల, బేస్ 1 లోని జి ఫంక్షన్ (ఫంక్షన్) మరియు బేస్ 2 లోని జి ఫంక్షన్ (ఫంక్షన్) రెండు వేర్వేరు తరగతుల రెండు వేర్వేరు పేరు ఖాళీలలో ఉన్నాయి, కాబట్టి ఓవర్‌లోడ్ రిజల్యూషన్ ఇక్కడ కిక్ చేయదు.
 అందువల్ల, c.g (5) లేదా సి. G () పరామితి లేని రెండూ కూడా నిజంగా అస్పష్టంగా ఉంటాయి.
 సారాంశంలోని ఈ నాలుగు కాల్‌లు అస్పష్టంగా ఉంటాయి మరియు కంపైలర్ వాటి మధ్య పరిష్కరించలేవు.
 కాబట్టి, వారు ఆ అస్పష్టతను పరిష్కరించాలని మీరు కోరుకుంటే, మీరు బేస్ 1 మరియు బేస్ 2 నుండి వారసత్వంగా పొందినట్లుగా, ప్రాథమిక సమస్య ఇక్కడ ఉందని చెప్పడానికి మీకు సరళమైన మార్గం ఉంది, మీరు F ఫంక్షన్ యొక్క రెండు కాపీలను పొందుతారు. .
 తరగతి.
 ఇప్పుడు, అసలు తరగతి ఫంక్షన్ కోసం వాడకం గురించి మేము తెలుసుకున్నాము, కాబట్టి మీరు దీన్ని ఉపయోగించవచ్చు.
 బేస్ 1 కోలన్ కోలన్ ఎఫ్ ఉపయోగించి మీరు చెబుతున్నారని అనుకుందాం, నేను బేస్ 1 కోలన్ కోలన్ ఎఫ్ ఉపయోగిస్తున్నానని చెబితే అది ఏమిటి, ఈ ఫంక్షన్ (ఫంక్షన్) ఉత్పన్నంలో చేర్చబడుతుంది మరియు ఈ ఫంక్షన్ (ఫంక్షన్) చేర్చబడదు, ఇది ఫంక్షన్ (ఫంక్షన్) బేస్ రెండు దాచిన ఫంక్షన్ అవుతుంది.
 అదేవిధంగా నేను G ఫంక్షన్ కోసం చేయగలను, నేను బేస్ 2 కోలన్ G ని ఉపయోగిస్తున్నానని చెప్పండి, అంటే అది G ఫంక్షన్‌ను కలిగి ఉంటుంది, కానీ బేస్ G ఫంక్షన్ (ఫంక్షన్) దాచబడుతుంది
 ఈ సందర్భంలో, ఇప్పుడు నేను సి డాట్ ఎఫ్ అని పిలవాలనుకుంటే, అది బేస్ 1 కోలన్ కోలన్ ఎఫ్ అని చెబుతుంది ఎందుకంటే నేను దానిని ఉపయోగిస్తున్నాను.
 నేను సి. g (5) నేను బేస్ యొక్క g ఫంక్షన్‌ను ఉపయోగిస్తున్నందున దీనిని బేస్ 2 కోలన్ కోలన్ గ్రా అని పిలుస్తారు.
 ఇప్పుడు నేను కూడా కావాలనుకుంటే, కొన్ని సందర్భాల్లో నేను బేస్ యొక్క F ఫంక్షన్‌ను ఉపయోగించాలనుకుంటున్నాను. 2 అప్పుడు డేటా సభ్యుల విషయంలో నేను చేసినట్లుగా, నేను సి డాట్ బేస్ను స్పష్టంగా ఉపయోగించగలను. కొలోన్ కొలోన్ F3 ను వ్రాయగలదు, ఈ సందర్భంలో ఇది బేస్ రెండు క్లాస్ యొక్క F ఫంక్షన్ అని పిలుస్తుంది.
 అయితే, ఉత్పన్నమైన తరగతిలో, నేను బేస్ 1 కోలన్ కోలన్ ఎఫ్ ఉపయోగిస్తున్నానని చెప్పాను.
 వాస్తవానికి ఉపయోగం ఏమిటంటే, ప్రాథమికంగా ఉపయోగం నాకు బేస్ క్లాస్ పేరుతో సభ్యుల ఫంక్షన్ (ఫంక్షన్) పేరును అర్హత చేయవలసిన అవసరం లేదని తగ్గించడానికి అనుమతిస్తుంది మరియు నేను డిఫాల్ట్‌గా ఉపయోగిస్తాను నేను ఇక్కడ చేస్తున్నట్లుగా ఉపయోగించవచ్చు , కానీ నేను ఎల్లప్పుడూ చేసేది వాస్తవానికి సభ్యుల ఫంక్షన్ కోసం అర్హత కలిగిన పేరును అందించే అవకాశం ఉంది, నేను డేటా సభ్యుడి కోసం చేసినట్లు మరియు ఆ రూపంలో ఇతర సభ్యులను ఉపయోగించడం వంటిది చేయండి
 కాబట్టి, ఒకే వారసత్వంపై ఇది అవసరం, ఇది చాలా సాధారణం, ఎందుకంటే మీరు వారసత్వంగా వారసత్వంగా పొందుతున్న మూల తరగతులు ఒకటి లేదా అంతకంటే ఎక్కువ సభ్యుల విధులను ఒకదానితో ఒకటి అనుసంధానించే అవకాశం ఉంది. నేను అదే పేరుతో ఉండాలి.
 మేము చూసినట్లుగా, వారి సంతకం పరంగా వారు పట్టించుకోనిది అదే పేరు, మరియు వారికి ఒకే పేరు ఉంటే, అప్పుడు ఉత్పన్నమైన తరగతి ఎటువంటి యోగ్యత లేకుండా ఉంటుంది. ఉపయోగించలేరు.
 బేస్ యొక్క యాక్సెస్ సభ్యులను సంప్రదించడం ద్వారా రక్షిత ప్రాప్యత ఏదైనా ఉత్పన్నమైన క్లాస్ ఆబ్జెక్ట్ బేస్ క్లాస్ యొక్క ఏదైనా బేస్ క్లాస్ యొక్క రక్షిత సభ్యులను యాక్సెస్ చేయడానికి అనుమతిస్తుంది, కొంతమంది దాచడం సహా. అనేక వారసత్వాలు కూడా ఉండవు.
 అందువల్ల, ఒకే వారసత్వం విషయంలో మనం నేర్చుకున్న ప్రతిదీ వర్తిస్తుంది కాబట్టి మేము ఈ అంశంపై మరింత చర్చను వదిలివేస్తాము.
 నన్ను కన్స్ట్రక్టర్, డిస్ట్రక్టర్ కి తరలించండి.
 ఉత్పన్నమైన తరగతి యొక్క కన్స్ట్రక్టర్ అన్ని విధ్వంసక బేస్ క్లాస్‌లో కన్స్ట్రక్టర్ కన్స్ట్రక్టర్లను వారసత్వంగా పొందుతాడు, కాని ఒకే వారసత్వం విషయంలో మనం చూసినట్లుగా వేరే సెమాంటిక్స్‌లో ఇది నేరుగా వారసత్వంగా (వారసత్వం). వారసత్వం) ఎందుకంటే దీనికి వేరే పేరు ఉంది, అది బేస్ క్లాస్‌కు పేరును జతచేస్తుంది మరియు మీరు కన్స్ట్రక్టర్, కన్స్ట్రక్టర్‌ను ఏ విధంగానైనా ఓవర్‌రైడ్ చేయలేరు లేదా ఓవర్‌లోడ్ చేయలేరు.
 కాబట్టి, మేము దానితో చూస్తే, బేస్ క్లాసులు ఉన్నాయని మనం చూడవచ్చు, ఇక్కడ ఒక కన్స్ట్రక్టర్ ఉంది.
 ఉత్పన్నమైన తరగతికి కన్స్ట్రక్టర్ ఉంది మరియు క్షమించండి, రెండవ బేస్ క్లాస్‌కు మరొక కన్స్ట్రక్టర్ ఉంది మరియు ఉత్పన్నమైన క్లాస్ ఉంది; ఇక్కడ ఆధార్ ఒకరి సృష్టికర్తను ఆహ్వానిస్తున్నారు.
 అప్పుడు ఏమి జరుగుతుంది? ఇప్పుడు, ఇది రెండు బేస్ క్లాస్ వస్తువులను నిర్మించాలి; బేస్ 1 ను ప్రారంభించడం అంటే బేస్ 1 కన్స్ట్రక్టర్ దాని ద్వారా ప్రారంభించబడుతుందని మరియు ఇది బేస్ 2 ను వదిలివేసినందున, బేస్ 2 లో డిఫాల్ట్ కన్స్ట్రక్టర్ ఉండాలి, అది ఆ తరువాత అమలు చేయబడుతుంది.
 కాబట్టి, నేను బేస్ 1 ను నిర్మించాను మరియు బేస్ 2 కి డిఫాల్ట్ కన్స్ట్రక్టర్ లేకపోతే, అప్పుడు నాకు సంకలన లోపం ఉంటుంది, ఎందుకంటే ఉత్పన్నమైన క్లాస్ ఆబ్జెక్ట్‌ను నిర్మించగలిగేలా నాకు బేస్ 1 మరియు బేస్ 2 రెండూ అవసరం. రకం వస్తువులను తయారు చేయండి.
 కాబట్టి, మేము ఉదాహరణను పరిశీలిస్తే, ఇది టైప్ 1 యొక్క వస్తువు; ఇది మనం నిర్మించగల బేస్ 2 రకం వస్తువు.
 ఇక్కడ మీరు ఉత్పన్నమైన రకం వస్తువు యొక్క సృష్టిని చూడవచ్చు, ఇక్కడ బేస్ క్లాస్ (క్లాస్ 1) 5 5 ఉదాహరణను కలిగి ఉంటుంది, దాని ద్వారా సృష్టించబడుతుంది.
 బేస్ క్లాస్ 2 ఉదాహరణ అప్రమేయంగా ఉంటుంది, కాబట్టి దీనికి 0 0 సభ్యులు ఉన్నారు మరియు ఉత్పన్నమైన తరగతి యొక్క డేటా సభ్యుడు.
 తయారీ ప్రక్రియ యొక్క ప్రాథమిక డైనమిక్స్ ఇది.
 మీరు సందేశాన్ని బేస్ క్లాస్ కన్స్ట్రక్టర్ మరియు కన్స్ట్రక్టర్లలో మరియు ఉత్పన్నమైన క్లాస్ కన్స్ట్రక్టర్ కన్స్ట్రక్టర్ డిస్ట్రక్టర్లో ఉంచితే, మొదటి బేస్ క్లాస్ 1 సృష్టించబడిందని మీరు చూస్తారు ఎందుకంటే ఇది జాబితాలో మొదటిది, అప్పుడు బేస్ క్లాస్ 2 ఎందుకంటే ఇది జాబితాలో రెండవది, ఆపై ఉత్పన్నమైన తరగతి యొక్క సృష్టి మరియు విధ్వంసం సరిగ్గా రివర్స్ క్రమంలో జరుగుతుంది.
 ఇది వారసత్వం యొక్క ప్రాథమిక విధానం, ఇది ఒక నిర్దిష్ట ఉత్పన్న తరగతి సమస్యకు బేస్ క్లాస్ యొక్క అనేక కేసులను సూచిస్తుంది.