friend Function and friend Class (Lecture 32)-gh51t49tKUQ 51 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
ఫ్రెండ్ ఫంక్షన్ ఫంక్షన్ మరియు ఫ్రెండ్ క్లాస్ ప్రోగ్రామింగ్ ఇన్ C ++ లో మాడ్యూల్ 17 కు స్వాగతం .
ఈ మాడ్యూల్‌లో, ఫ్రెండ్ ఫంక్షన్ గురించి మరియు ఫ్రెండ్ క్లాస్ గురించి మాట్లాడుతాము, వారు అర్థం ఏమిటో అర్థం చేసుకోవడానికి ప్రయత్నిస్తున్నారు మరియు వారు C ++ డిజైన్ ప్రాసెస్‌లో ఉన్నారు. అవి ఎందుకు ఉపయోగపడతాయి?
ఇవి మాడ్యూల్ యొక్క రూపురేఖలుగా ఉంటాయి.మేము మ్యాట్రిక్స్ వెక్టర్ గుణకారం మరియు అనుసంధాన జాబితా యొక్క ఉదాహరణలను తీసుకుంటాము మరియు చివరకు కొన్ని గమనికలతో ముగుస్తుంది.
మీకు తెలిసినట్లుగా అవుట్‌లైన్ సాధారణంగా మీ స్లైడ్ యొక్క ఎడమ వైపున అందుబాటులో ఉంటుంది.
కాబట్టి, మొదట ఫ్రెండ్ ఫంక్షన్ యొక్క ప్రాథమిక భావనను పరిచయం చేద్దాం.
ఎడమ వైపున మీరు ఒక సాధారణ ఫంక్షన్ యొక్క వీక్షణను చూస్తారు.
కాబట్టి పరిస్థితి ఇలా ఉంది, నాకు కొన్ని ప్రైవేట్ డేటా వలె క్లాస్ మైక్లాస్ ఉంది, దీనికి కన్స్ట్రక్టర్ ఉంది, మరియు అది; ఈ పంక్తిని విస్మరించినట్లయితే క్షమించండి.
క్లాస్‌తో ఏదైనా చేయటానికి ప్రయత్నిస్తున్న ఈ తరగతి వెలుపల ఈ ఫంక్షన్ నాకు ఉంది.
నువ్వేమి చేస్తున్నావు ఇది పారామితి పరామితి ద్వారా కాల్ పరామితిని తీసుకుంటుంది, ఆపై అది ఆ ప్రయోజనం యొక్క డేటా మూలకం భాగాన్ని ముద్రించడానికి ప్రయత్నిస్తుంది.
ఇప్పుడు, మనకు తెలిసినది, ఇది ప్రైవేట్, కాబట్టి, నాకు ఫంక్షన్ ఉంటే, ఈ వస్తువును యాక్సెస్ చేసే హక్కు నాకు లేదు.
కాబట్టి, అది కాదని పరిగణించండి.
ఇది లోపానికి దారి తీస్తుంది మరియు మైక్లాస్‌లో ప్రకటించిన ఒక ప్రైవేట్ సభ్యుడు యాక్సెస్ చేయలేని లోపం మీకు లభిస్తుంది, ఎందుకంటే మీకు ఇప్పుడు బాగా తెలుసు కారణం ఇది గ్లోబల్ ఫంక్షన్ మరియు ఇది ప్రైవేట్ ఇది డేటా, తద్వారా మీరు నేరుగా డేటాను యాక్సెస్ చేయలేరు.
ఇప్పుడు, మేము కుడి వైపు చూస్తాము.
కుడి వైపున, మనకు సరిగ్గా అదే కోడ్ ఉంది, మేము దానిని తరగతిలో ప్రవేశపెట్టాము, అదే విధంగా మేము సభ్యుల ఫంక్షన్‌ను నిర్వచించాము, కానీ ఈ చేరిక ఒక కీవర్డ్ అనే తేడాతో. (కీవర్డ్) దీని ద్వారా ప్రిఫిక్స్ చేయబడింది స్నేహితుడు.
ఇప్పుడు ఇది డిస్ప్లేని క్లాస్ యొక్క సభ్యుల ఫంక్షన్ చేయదు, డిస్ప్లే క్లాస్ సభ్యుడు ఫంక్షన్ కాదు, ఇది గ్లోబల్ ఫంక్షన్.
మైక్లాస్ యొక్క స్నేహితుడు అయిన ఒక నిర్దిష్ట రకం గ్లోబల్ ఫంక్షన్, కానీ నేను ఈ గ్లోబల్ ఫంక్షన్ డిస్‌ప్లేను చెప్పినప్పుడు ఇది మైక్లాస్ యొక్క వస్తువును తీసుకుంటుంది మరియు మైక్లాస్ ఒక స్నేహితుడు అని నేను చెప్పినప్పుడు శూన్యమవుతుంది, లోపం లేదు, ఈ లోపం అదృశ్యమవుతుంది, ఇది ఇప్పుడు అనుమతించబడింది.
కాబట్టి భావన మా ఇంట్లో కూడా మీకు తెలిసినట్లుగా ఉంటుంది. ఎవరైనా మా ఇంట్లోకి అడుగుపెడితే, మేము సాధారణంగా వారిని డ్రాయింగ్ రూమ్‌కు తీసుకెళ్లవచ్చు, ఇది బహిరంగ స్థలం లాంటిది మరియు మేము వారికి ఇంటీరియర్  కలిగి ఉన్నగదులు మాత్రమే ఇస్తాము మాది ఇవ్వము. ప్రైవేట్ స్థలం.
నాకు ఒక స్నేహితుడు ఉంటే, నేను ఆమెను డ్రాయింగ్ గదిలో వేచి ఉండను, బదులుగా నేను ఆమెను నా బెడ్ రూమ్ లేదా కిచెన్ మొదలైన వాటిలో నా మంచానికి తీసుకువెళతాను.
కనుక ఇది ఇలాంటి కాన్సెప్ట్ లాంటిది.
కాబట్టి ఇక్కడ, ఈ ఫంక్షన్ (మైక్లాస్) ఈ తరగతికి వెలుపల ఉన్న సభ్యుల ఫంక్షన్ లేని డిస్ప్లే ఫంక్షన్ ఇప్పటికీ మిత్రుడని, అందువల్ల, ఈ తరగతి యొక్క ప్రైవేట్ డేటా ఈ సభ్యునికి బహిర్గతమవుతుందని వారు చెప్పారు.
ఇది ఫ్రెండ్ ఫంక్షన్ యొక్క ప్రాథమిక ఆలోచన మరియు కనుక ఇది సంకలనం లోపాన్ని ఇచ్చే విధంగా ఉత్పత్తి చేస్తుంది కాని ఇది సరైనది, అవుట్పుట్ ఉత్పత్తి అవుతుంది.
అదే సమయంలో, "ఫ్రెండ్ (ఫ్రెండ్) ఫంక్షన్ యొక్క క్లాస్ ఫంక్షన్ యొక్క ప్రైవేట్ మరియు రక్షిత సభ్యులకు యాక్సెస్" అనే ఫ్రెండ్ ఫంక్షన్ అంటే ఏమిటో ఒక అధికారిక నిర్వచనాన్ని మనం చూడవచ్చు. ఇది సంభవిస్తుంది.
"ఇది రక్షిత సభ్యులు ఏమిటో ఇంకా చర్చించబడని ఎన్‌క్యాప్సులేషన్‌ను విచ్ఛిన్నం చేయవచ్చు, అయితే, ఇది స్పష్టంగా తెలుస్తుందని మేము చర్చించినప్పుడు కొంతకాలం పట్టుకోండి, కాని వారు ఆ ప్రైవేట్ సభ్యుడిలాగే ఉన్నారు.
కనుక ఇది తరగతి పరిధిలో ఒక నమూనాను కలిగి ఉండాలి మరియు స్నేహితుడితో ముందే ఉండాలి, డిస్ప్లే ఫంక్షన్ యొక్క ఉదాహరణలో మీరు క్లాస్ లోపల ఆ ఫంక్షన్ (ఫంక్షన్) ను ఉపయోగించవచ్చు. స్నేహితుడితో స్నేహితుడి సంతకాన్ని ఎలా వ్రాయాలి, ఈ ప్రత్యేకమైన ఫంక్షన్ ఈ తరగతికి స్నేహితుడు అని చెప్పడం.
ఇప్పుడు ఈ ఫంక్షన్ (ఫంక్షన్) తరగతికి సంబంధించినది కాదు, ఇది సభ్యుల ఫంక్షన్ (ఫంక్షన్) కాదు, కాబట్టి సాధారణ నాన్ ఫ్రెండ్ (ఫ్రెండ్) సభ్యుల ఫంక్షన్ల కోసం మేము చేసే విధంగా క్లాస్ పేరుతో పేరు అర్హత లేదు.
ఇది తరగతిలో భాగం కానందున ఇది ఒక వస్తువును ప్రారంభించడం ద్వారా ప్రారంభించబడదు.
ఒక నిర్దిష్ట సభ్యుల ఫంక్షన్ లేదా ఒక నిర్దిష్ట ఫంక్షన్ ఒకటి కంటే ఎక్కువ తరగతుల స్నేహితుడు కావచ్చు.
ఇప్పుడు, అన్ని ఫ్రెండ్ ఫంక్షన్లు ఏమిటో మీరు చూస్తే; ఏదైనా గ్లోబల్ ఫంక్షన్ ఒక తరగతికి స్నేహితుడు (స్నేహితుడు) కావచ్చు, వేరే తరగతి సభ్యుడు కూడా తరగతికి స్నేహితుడు (స్నేహితుడు) కావచ్చు లేదా ఫంక్షన్ టెంప్లేట్ ఫ్రెండ్ ఫ్రెండ్ ఫంక్షన్ కావచ్చు.
ఇప్పుడు, మీకు ఫంక్షన్ టెంప్లేట్ మళ్ళీ తెలియదు, కానీ మీరు వచ్చినప్పుడు అది ఎలా పనిచేస్తుందో మీకు అర్థం అవుతుంది.
దీనితో, ఇప్పుడు మరింత దృఢమైన సమస్యను పరిచయం చేద్దాం.
ఇక్కడ సమస్య ఏమిటంటే, నాకు రెండు తరగతులు ఉన్నాయి, నాకు ఒక ఆకారం n యొక్క సరళ వెక్టర్ కలిగి ఉన్న వెక్టర్ క్లాస్ మరియు ఒక తరగతిని కలిగి ఉన్న మ్యాట్రిక్స్ క్లాస్ ఉన్నాయి. (క్లాస్) ఒక మాతృకను కలిగి ఉంటుంది, తప్పనిసరిగా క్లాస్ మ్యాట్రిక్స్ కాదు. ఇది ఉంటుంది m కొలతలు ద్వారా n యొక్క మాతృక.
కాబట్టి, వెక్టర్ విషయాలను సరళంగా ఉంచడానికి ఇది కేవలం ఒక కన్స్ట్రక్టర్, తద్వారా నేను వెక్టర్ యొక్క విలువలను నమోదు చేయనవసరం లేదు, ఇక్కడ నేను కన్స్ట్రక్టర్ వంటిదాన్ని సెట్ చేసాను. కొన్ని విలువలను సెట్ చేస్తుంది.
అదేవిధంగా, మ్యాట్రిక్స్ యొక్క కన్స్ట్రక్టర్ విలువలను నిర్మించినప్పుడు స్వయంచాలకంగా ప్రారంభించబడుతుందని అనుకుందాం.
మా ఆసక్తికి లేని మాతృక లేదా వెక్టర్‌లో ఏ విలువలు ఉన్నాయో నా ఉద్దేశ్యం.
మన ఆసక్తి ఏమిటి? ఇప్పుడు వెక్టర్ ఆబ్జెక్ట్ మరియు మ్యాట్రిక్స్ ఆబ్జెక్ట్ ఇవ్వబడింది, నేను వారి ఉత్పత్తిని లెక్కించగలిగే ఫంక్షన్‌ను నిర్వచించాలనుకుంటున్నాను.
నేను ఈ రకమైన ఫంక్షన్ కోరుకుంటున్నాను.
ఇక్కడ ఒక మ్యాట్రిక్స్ ఆబ్జెక్ట్ తీసుకునే ఫంక్షన్, నేను దానిని పాయింటర్ ద్వారా తీసుకున్నాను.ఒక వెక్టర్ ఒక వస్తువును తీసుకుంటుంది, అవి మాతృక అయి ఉండాలి. వెక్టర్ గుణకారం యొక్క నియమాలను అనుసరిస్తుంది మరియు ఈ సందర్భంలో నాకు ఖచ్చితంగా వెక్టర్ అవుతుంది .
మీరు ఇక్కడ చూస్తున్నది, ఇది ప్రత్యేకంగా పనిచేస్తుంది మరియు ఇది అమలు అవుతుంది. నేను అమలు చేయడం లేదు. మీరు తరువాత చూడవచ్చు. ఇది ఒక నిర్దిష్ట మాతృక (వెక్టర్) గుణకారం కోడ్.
హైలైట్ చేయడానికి నాకు ఆసక్తి ఏమిటంటే, ఇక్కడ ఈ ఫంక్షన్ నేను గ్లోబల్ ఫంక్షన్‌గా వ్రాశాను.
ఈ ఫంక్షన్ వెక్టర్ లోపలికి చేరుకోవాలి.ఇది ఖచ్చితంగా ఈ శ్రేణి మరియు కోణాన్ని యాక్సెస్ చేయాలి.
అదేవిధంగా, ఇది మాతృక మరియు దాని కొలతలు కూడా యాక్సెస్ చేయవలసి ఉంటుంది, తద్వారా వారు తమ ఉత్పత్తిని వాస్తవంగా లెక్కించగలరు.
ఇప్పుడు, మోసం (ప్రోడ్) ఈ తరగతుల్లో దేనిలోనూ సభ్యుడు కాదు.
వాస్తవానికి, దీన్ని సభ్యునిగా చేయడం సమస్యను పరిష్కరించదు, ఎందుకంటే నేను ఉత్పత్తులను వెక్టర్‌లో సభ్యునిగా చేస్తే వాటిని సులభంగా యాక్సెస్ చేయవచ్చు, కానీ అది ఇప్పటికీ వాటిని యాక్సెస్ చేయదు.
నేను ఉత్పత్తిని మాతృకలో సభ్యునిగా చేస్తే, నేను దాన్ని యాక్సెస్ చేయగలను కాని నేను దానిని యాక్సెస్ చేయలేను.
కాబట్టి ఇక్కడ నేను దీనిని ఒక గ్లోబల్ ఫంక్షన్‌గా చేస్తానని ఒక పరిష్కారాన్ని అందిస్తున్నాను, ఇది ఈ తరగతులకు ప్రతి వెలుపల ఉంది, కాని నేను చేసేది ఏమిటంటే నేను ఈ రెండు తరగతుల్లోనూ ఒక స్నేహితుడు (స్నేహితుడు) ఫంక్షన్ చేస్తాను.
నేను ఒక ఉత్పత్తిని క్లాస్ వెక్టర్ యొక్క స్నేహితునిగా చేస్తే, ఉత్పత్తి వెక్టార్ యొక్క స్నేహితుడు కనుక ఈ ప్రైవేట్ డేటా సభ్యులను యాక్సెస్ చేయగలుగుతారు.
అదేవిధంగా, నేను మాతృక తరగతి యొక్క ప్రైవేట్ సభ్యులను యాక్సెస్ చేయాలి, కాబట్టి నేను కూడా స్నేహితుడిని మాతృక తరగతిలో ఉత్పత్తి చేస్తాను.
నేను దీన్ని పూర్తి చేసిన తర్వాత కోడ్ కంపైల్ చేయబడుతుంది ఎందుకంటే నేను వెక్టర్ యొక్క ప్రైవేట్ డేటా సభ్యులను లేదా మాతృక యొక్క ప్రైవేట్ డేటా సభ్యులను సూచించేటప్పుడు, రెండూ ప్రాప్యత చేయబడతాయి ఎందుకంటే ఈ రెండు తరగతుల ఫ్రెండ్ (స్నేహితుడు) మరియు అది కోడ్‌ను కంపైల్ చేస్తుంది మరియు నేను దానితో ఒక ప్రధాన అప్లికేషన్‌ను వ్రాస్తే.
కొలతలు మూడు మాతృకలను నేను ఎక్కడ సృష్టించాను. మూడు వెక్టర్ ఆఫ్ డైమెన్షన్ మూడుగా, వాటి విలువలు అప్రమేయంగా నింపబడుతున్నాయని నేను చెప్పాను మరియు అది మాతృకతో నిండి ఉంది, కాబట్టి ఫంక్షన్ అది వెక్టర్ అని చూపిస్తుంది మరియు తరువాత నేను గుణించినట్లయితే పివి అనేది మాతృక యొక్క గుణకారం మరియు వెక్టర్ మరియు పివి ఈ అవుట్పుట్ మారుతుంది
ఇక్కడ నేను ఈ ఫంక్షన్‌ను వ్రాయగలను, నాకు ఫ్రెండ్ (ఫ్రెండ్) ఫంక్షన్ వచ్చేవరకు ఈ ఫంక్షన్ రాయలేను.
ఎందుకంటే నేను ఉత్పత్తులను వెక్టర్‌లో సభ్యునిగా చేయగలను లేదా నేను దానిని మాతృకలో సభ్యునిగా చేయగలను, కాని నేను ఖచ్చితంగా రెండింటిలో సభ్యునిగా చేయలేను, కానీ రెండు తరగతుల సభ్యులను చేరుకోవడానికి గుణించాలి. లెక్కించగలగాలి .
కాబట్టి, కార్యాచరణను పూర్తి చేయడానికి నాకు రెండు లేదా అంతకంటే ఎక్కువ స్వతంత్ర తరగతుల కోసం అంతర్గత లేదా ప్రైవేట్ డేటా సభ్యులు మరియు పద్ధతులు అవసరమయ్యే పరిస్థితిని ఎదుర్కొన్నప్పుడు, ఆ స్థలానికి రావడానికి నాకు ఒక స్నేహితుడు (స్నేహితుడు) అవసరం.) ఫంక్షన్ ఫంక్షన్ అవసరం.
ఇది ఇక్కడ మరొక ఉదాహరణ; ఉదాహరణ నేను జాబితా చేయడానికి ప్రయత్నిస్తున్నాను.
నేను జాబితాను ఎలా తయారు చేయగలను? నాకు నోడ్ క్లాస్ ఉంది.
జాబితాలోని తదుపరి నోడ్ (నోడ్) కు లింక్ చేయడానికి డేటా భాగాన్ని మరియు లింక్ భాగాన్ని కలిగి ఉన్న అసలు నోడ్ సమాచారాన్ని నోడ్ క్లాస్ నిర్వచిస్తుంది.
మరియు నాకు జాబితా తరగతి ఉంది, ఇది వాస్తవానికి ఈ మొత్తం జాబితాను కలిగి ఉంది, కాబట్టి అంతే.
జాబితా తరగతిలో, రెండు పాయింట్లు, హెడర్ పాయింటర్ మరియు పాయింటర్, సాధారణంగా చూడవచ్చు, కాబట్టి ఇది ఇలా కనిపిస్తుంది, నాకు ఇలాంటి జాబితా ఉంటుంది, ఇది 2 అని చెప్పండి, ఇది 3, మరియు జాబితాను చెప్పండి ఇక్కడ ముగిసింది.
కాబట్టి, నా తల జాబితా యొక్క ప్రారంభాన్ని సూచిస్తుంది మరియు తోక జాబితా ముగింపును సూచిస్తుంది.
కాబట్టి నేను నిజంగా అలాంటి నిర్మాణాన్ని సృష్టించాలనుకుంటున్నాను, ఆపై నేను జాబితాను ఉపయోగించాలనుకుంటున్నాను.
నేను ప్రదర్శించాల్సిన జాబితాలో ఈ రకమైన కార్యాచరణను అమలు చేయాలనుకుంటే, అది జాబితాకు వెళ్లి మీ వద్ద ఉన్న అన్ని అంశాలను అవుట్పుట్ చేస్తుంది లేదా మీరు జాబితాకు జత చేసింది.
నేను ఆ జాబితా :: ప్రదర్శనను చెప్పాలనుకుంటే, అది జాబితా యొక్క సభ్యుల పని.
నేను దీన్ని అమలు చేయాలనుకుంటే నాకు నోడ్ యొక్క అంతర్గత సమాచారం అవసరం, ఎందుకంటే నేను నోడ్ యొక్క సమాచారాన్ని యాక్సెస్ చేసే వరకు ఆ విలువను ముద్రించలేను.
నేను నోడ్ యొక్క తదుపరి ఫీల్డ్‌ను యాక్సెస్ చేసే వరకు జాబితాలోని తదుపరి నోడ్‌ను యాక్సెస్ చేయలేను, కాబట్టి నేను వాటిని యాక్సెస్ చేయాలి.
కానీ ప్రాథమికంగా డిస్ప్లే క్లాస్ జాబితా యొక్క సభ్యుల ఫంక్షన్, కాబట్టి ఇది నోడ్ (నోడ్) క్లాస్ యొక్క ప్రైవేట్ సభ్యులను మరియు నేను స్నేహితుడిని (స్నేహితుడిని) ఉపయోగించే చోట యాక్సెస్ చేయడానికి నన్ను అనుమతించదు.
నేను ఏమి చేస్తాను? క్లాస్ I డిస్ప్లే ఫంక్షన్ యొక్క సంతకాన్ని నోడ్‌కు వ్రాస్తుంది.
ప్రదర్శన సభ్యుల ఫంక్షన్ అని గమనించండి, కాబట్టి ప్రదర్శన ఫంక్షన్ పేరు వాస్తవానికి జాబితా :: నోడ్ (నోడ్), కాబట్టి నేను ఇక్కడ వ్రాస్తున్నాను ఎందుకంటే నన్ను క్షమించండి, సభ్యుల ఫంక్షన్ (ఫంక్షన్) పేరు ప్రదర్శన మరియు పూర్తి పేరు జాబితా: ప్రదర్శన.
అందువల్ల, నేను మొత్తం సంతకాన్ని ఇక్కడ వ్రాస్తున్నాను మరియు నేను కీవర్డ్ ఫ్రెండ్‌తో ఉపసర్గ చేస్తున్నాను.
జాబితా యొక్క సభ్యుల విధులు అయిన ప్రదర్శన మరియు అనుబంధాలు రెండూ నోడ్ క్లాస్ యొక్క స్నేహితులు (స్నేహితుడు) గా సృష్టించబడతాయి, అంటే నేను ప్రదర్శనను అమలు చేయడానికి ప్రయత్నించినప్పుడు లేదా నేను జోడించినప్పుడు నేను అమలు చేయడానికి ప్రయత్నిస్తే, వారు యాక్సెస్ చేయగలరు నోడ్ (లు) తరగతి యొక్క ప్రైవేట్ డేటా సభ్యులు మరియు నేను చాలా మంచి జాబితా అమలును పొందగలుగుతాను, మరియు ఒక అప్లికేషన్ ఉంటే శూన్య జాబితాను సృష్టించే ఎవరైనా కొన్ని నోడ్ వస్తువును సృష్టిస్తారు మరియు అది నోడ్ను జతచేస్తుంది ( నోడ్) ఒకదాని తరువాత ఒకటి మరియు అది చివరికి జాబితాను ముద్రిస్తుంది.
మీరు ఇలా చేస్తే మీకు 1 2 3 ముద్రణ లభిస్తుంది ఎందుకంటే మేము 3 మోడ్‌లను సృష్టించాము, అవి 1 2 మరియు 3 విలువలతో ఉంటాయి, ఇది చాలా ముఖ్యమైనది కాదు.
స్నేహితుడు (స్నేహితుడు) ఫంక్షన్‌ను ఉపయోగించడం ద్వారా, మీరు కొంతవరకు సంబంధం ఉన్న తరగతులకు బాగా లింక్ చేయగలరని నేను సూచించాలనుకుంటున్నాను, కాని ఆదిమ నోడ్ ఏమిటో పూర్తిగా స్వతంత్రంగా ఉంటుంది.) మీరు విలువను కలిగి ఉండాలనుకునే నిర్మాణాన్ని ఇస్తుంది మరియు వాస్తవానికి జాబితాను నిర్వహించే మరొకటి వాటిలోని కార్యాచరణ వంటి నిర్మాణం, నిర్వహణ మరియు తొలగింపును ప్రదర్శిస్తుంది.
మరియు మేము వారి ఎన్‌క్యాప్సులేషన్ పరిమితిని తగ్గించుకుంటున్నాము. నోడ్ క్లాస్ యొక్క స్నేహితులుగా జాబితా తరగతి యొక్క కొన్ని సభ్యుల ఫంక్షన్లను సృష్టించడం ద్వారా మేము నోడ్ యొక్క ఎన్‌క్యాప్సులేషన్‌లో మొత్తం ఫంక్షన్ చేస్తున్నాము.
గ్లోబల్ ఫంక్షన్ రెండు తరగతుల స్నేహితుడిగా ఎలా ఉంటుందో చూపించిన మాతృక గుణకారం యొక్క మొదటి ఉదాహరణతో పోలిస్తే, ఇక్కడ నేను తప్పనిసరిగా ఒక సభ్యుల ఫంక్షన్, వాస్తవానికి, ఒక తరగతి యొక్క రెండు సభ్యుల విధులు ఇతర తరగతికి స్నేహితులుగా ఉంటానని చూపించాను.
మ్యాట్రిక్స్ వెక్టర్ గుణకారం కూడా నేను ఉత్పత్తులను వెక్టర్ యొక్క సభ్యునిగా మార్చగలిగే శైలిలో పరిష్కరించవచ్చు మరియు ఆ వెక్టర్ :: మాతృక యొక్క ఒక స్నేహితుడు లేదా దీనికి విరుద్ధంగా, ఇది ఉత్పత్తులలో మాతృక యొక్క సభ్యుల పనితీరును నిర్మిస్తుంది మరియు తరువాత మాతృకను నిర్మిస్తుంది :: వెక్టర్ యొక్క స్నేహితుడు.
సాధారణంగా మంచి ప్రయోజనాల కోసం ఫ్రెండ్ ఫంక్షన్ ఎలా ఉపయోగించబడుతుందో అలా ఇది ఉంటుంది.
దీనిలో కొంత వివరాలు ఉన్నాయి, మీరు ఒక జాబితా మరియు నోడ్ ఉదాహరణ గురించి ఆలోచిస్తే, మాకు జాబితా యొక్క సభ్యుల విధులు మరియు స్నేహితులుగా ఉండటానికి నోడ్ యొక్క నోడ్ రెండూ అవసరం అనే వాస్తవం ఈ విస్తరణకు దారితీస్తుంది. పనితీరు అనుబంధం కూడా అవసరం.
ఇప్పుడు, జాబితా తరగతులు తీసివేయబడితే, అది నోడ్‌కు స్నేహితుడిగా ఉండాలి మరియు మొదలైనవి.
మీరు చేయగలిగే సత్వరమార్గం ఉంది మరియు అది ఫ్రెండ్ క్లాస్‌ను సూచిస్తుంది.
నేను రెండు తరగతులు కలిగి ఉంటే, మనం ఒక తరగతిని మరొక స్నేహితుడిగా సృష్టించవచ్చు, ఆ తరగతి పేరు మరియు స్నేహితుడిని ఉపసర్గ చేయండి.
ఒక తరగతి మరొక స్నేహితుడి స్నేహితులైతే, అది తరగతి యొక్క ప్రైవేట్ మరియు రక్షిత సభ్యులకు ప్రాప్యతను కలిగి ఉంటుంది.
ఒక నిర్దిష్ట ఫంక్షన్‌ను ఉపయోగించే ఒక స్నేహితుడు (స్నేహితుడు) ఫంక్షన్ కోసం, ఒక తరగతి తరగతికి ఆ తరగతి యొక్క అన్ని పద్ధతులను ప్రాప్యత చేయడానికి, ప్రైవేట్ డేటా సభ్యులు మరియు స్నేహితులు ఫ్రెండ్ క్లాస్ సభ్యుడు ఫంక్షన్లను కలిగి ఉంటారు, నేను ఏ ఫంక్షన్ సభ్యుడిని సూచిస్తున్నప్పటికీ.
సహజంగానే, ఇది ఒక తరగతి కాబట్టి, అది స్నేహితులుగా ఉండే తరగతి పేరును పూర్తిగా అర్హత పొందదు, ఎందుకంటే ఇది ఒక సమూహ తరగతి.) లేదు, ఇది కేవలం రెండు స్వతంత్ర తరగతులు, నాకు ఇక్కడ ఒక తరగతి ఉంది, నాకు ఒక తరగతి ఉంది ఇక్కడ, నాకు ఇక్కడ 1 ఉంది, నాకు ఇక్కడ 2 ఉన్నాయి.
నేను సి 2 సి 1 యొక్క స్నేహితుడు అని చెప్తున్నాను, కాబట్టి వారి పేరు వారి ప్రత్యేక పేరు అవుతుంది మరియు ఒక తరగతిని ఒకటి కంటే ఎక్కువ తరగతులలో స్నేహితుడిగా ప్రకటిస్తారు.
ఫ్రెండ్ క్లాస్ అంటే ఏమిటి, క్లాస్ ఫ్రెండ్ క్లాస్ కావచ్చు క్లాస్ క్లాస్ ఫ్రెండ్ క్లాస్ కావచ్చు.
మేము ఇంకా క్లాస్ టెంప్లేట్ చేయలేదు. మనం టెంప్లేట్ గురించి పూర్తిగా మాట్లాడినప్పుడు, క్లాస్ టెంప్లేట్లు ఫ్రెండ్ క్లాసులుగా ఎలా తయారవుతాయో స్పష్టమవుతుంది.
ఇప్పుడు, ఫ్రెండ్ క్లాస్ కాన్సెప్ట్‌ను ఉపయోగించి లింక్ జాబితా ఉదాహరణను మళ్ళీ సందర్శించండి.
కాబట్టి మొదటి ఉదాహరణలో నేను ఏమి చేస్తున్నానో, నేను రెండు పంక్తులపై వ్యాఖ్యానించాను, ఇది సభ్యుల ఫంక్షన్ మరియు సభ్యుల తరగతి యొక్క నోడ్ క్లాస్ యొక్క స్నేహితుల యొక్క విధిగా మేము ప్రదర్శిస్తాము.ఒక సభ్యునిగా, బదులుగా నేను మొత్తం జాబితాను తయారు చేసాను ఒక స్నేహితుడిగా.
ఇది వ్రాయడానికి మార్గం. తరగతి మరియు తరగతి పేరు మీరు సూచించే పద్ధతి మరియు మీరు ఈ నోడ్ (నోడ్) తరగతి (తరగతి) umes హిస్తుందని చెప్పడానికి మీరు దాని ముందు ఒక స్నేహితుడు (స్నేహితుడు) కీవర్డ్‌ని ఉంచారు. మొత్తం జాబితా ఒక స్నేహితుడు.
ఇది ప్రదర్శన మరియు అనుబంధం మాత్రమే కాదు (రిఫరెన్స్ సమయం: 19:14) శోధన వంటి ఇతర సభ్యులను తొలగించడానికి ఇష్టపడే చోట, జాబితా సభ్యులకు మనం ఏ సభ్యుడిని చేర్చగలం, వారందరూ నోడ్ క్లాస్ యొక్క స్నేహితుడు (స్నేహితుడు) , మిగిలిన అమలు అదే.
మిగిలిన అమలు మరియు ఈ అనువర్తనం మునుపటి కంటే భిన్నంగా లేదు.
ఈ మూడు పంక్తులలో మాత్రమే తేడా ఉంది, ఇక్కడ ఫ్రెండ్ ఫంక్షన్‌ను ఉపయోగించకుండా, మేము ఫ్రెండ్ క్లాస్‌ని ఉపయోగిస్తున్నాము.
కాబట్టి, ప్రత్యేకించి రెండు తరగతులలో చాలా సభ్యుల విధులు ఉంటే, వ్యక్తిగత సభ్యుని ఫంక్షన్లను స్నేహితుడిగా (స్నేహితుడిగా) చేయడానికి బదులుగా, మీరు నిజంగా మొత్తం తరగతులను స్నేహితుడిగా (స్నేహితుడిగా) చేయాల్సిన అవసరం ఉందా అని మేము పరిగణించాలి. మీ జీవితం సులభం ఎందుకంటే మీరు అన్ని వివిధ సభ్యుల విధులను జాబితా చేయవలసిన అవసరం లేదు, ముఖ్యంగా స్నేహితుడిగా.
కాబట్టి, ఈ ఫ్రెండ్ మెటీరియల్ ఎలా పనిచేస్తుందో ఇప్పుడు మీరు చూసారు.
ఇప్పుడు నేను కొన్ని స్నేహపూర్వక నోడ్‌లతో ముగించాలి. గమనించదగ్గ మొదటి విషయం స్నేహం, ఒక తరగతి మరొకరి స్నేహితుడు అని మేము చెప్పినప్పుడు, ఈ స్నేహం రెండు తరగతుల మధ్య బైనరీ సంబంధం లాంటిది మరియు ఇది బైనరీ సంబంధం మార్పిడి లేదా పరివర్తన కాదు .
ఇది ప్రయాణించేది కాదు, అంటే A B యొక్క స్నేహితుడు అయితే, B A యొక్క స్నేహితుడు అని అర్ధం కాదు.
నేను B ని A యొక్క స్నేహితునిగా చేయాలనుకుంటే, నేను స్నేహితుని (స్నేహితుడు) B (B) ను A యొక్క తరగతి పరిధిలో ఉంచాలి.
క్లాస్ బి ఈ స్టేట్మెంట్, కానీ ఎ బి యొక్క స్నేహితుడు అనే వాస్తవం బి యొక్క స్నేహితుడు అని అర్ధం కాదు, కనుక ఇది ప్రయాణ సంబంధ సంబంధం కాదు.
అదేవిధంగా, నేను B యొక్క స్నేహితుడిగా A కలిగి ఉంటే, B ఈ చతురస్రాల నుండి C యొక్క స్నేహితుడు, అంటే A C యొక్క స్నేహితుడు (స్నేహితుడు) అని అర్ధం కాదు, అందువల్ల అంటువ్యాధి పనిచేయదు.
స్నేహం కేవలం బైనరీ, కేవలం రెండు తరగతుల మధ్య పని చేయండి మరియు తదుపరి అనుమానం సాధ్యం కాదు.
ఇప్పుడు ఇలా చెప్తున్నప్పుడు, ఫ్రెండ్ ఫంక్షన్ మరియు ఫ్రెండ్ క్లాస్ యొక్క ఈ ఫ్రెండ్ ఫీచర్ వాస్తవానికి భాష యొక్క ఎన్కప్సులేషన్ మరియు దృశ్యమాన నిర్మాణాన్ని మారుస్తుందని దయచేసి గమనించండి.
ఇప్పటివరకు మనకు మూడు రకాల దృశ్యమానత ఉంది, వాటిలో రెండు మేము ఇప్పటికే ప్రభుత్వ మరియు ప్రైవేటులో చర్చించాము, వారసత్వానికి వర్తించే రక్షిత దృశ్యమానతను త్వరలో చర్చిస్తాము.
స్నేహితుడు C ++ లో ఉన్న నాల్గవ రకమైన దృశ్యమానత, ఇక్కడ మీరు కొన్ని ఇతర తరగతులను ప్రత్యేకంగా ఒక తరగతిని సృష్టించవచ్చు, మరికొందరు సభ్యులు స్నేహితుడిగా పని చేస్తారు మరియు ఈ దృశ్యమానతను అందిస్తారు. ఇది పరిమితం చేయబడింది, అయితే ఇక్కడ ఎన్కప్సులేషన్ పూర్తిగా పంక్చర్ చేయబడాలి .
కాబట్టి, మీరు స్నేహితుడిని చేసేది ఇదే, చాలా న్యాయంగా చేయాలి ఎందుకంటే మీరు ఏకపక్షంగా మరొక తరగతి మరియు ఇతర ఫంక్షన్ చేస్తే, గ్లోబల్ ఫంక్షన్ లేదా సభ్యుడు ఫంక్షన్ ఫ్రెండ్. అప్పుడు డేటాను ఉపయోగించడం మరియు తగిన వాటి ద్వారా వాటిని యాక్సెస్ చేయడం వల్ల మీ ప్రయోజనాలన్నీ సభ్యుల ఫంక్షన్ల ఎంపిక పోతుంది.
అందువల్ల, స్నేహితుడు (స్నేహితుడు) ఉపయోగం నిజంగా సహాయపడే సాధారణ పరిస్థితులను ఇక్కడ ఉంచడానికి మేము ప్రయత్నించాము.
మొదటిది మీకు రెండు స్వతంత్ర తరగతులు ఉన్న మాతృక రకం వెక్టర్, కానీ మీకు ఒక కార్యాచరణ ఉంది, ఇక్కడ డేటా సభ్యుడు, రెండు తరగతుల ప్రైవేట్ సభ్యుడు, వెక్టార్‌తో మాతృక. గుణకారం (మాతృక) విషయంలో పాల్గొనండి.
లేదా జాబితాలోని వివిధ నోడ్ నోడ్‌ల యొక్క వస్తువుల జాబితా వంటి మరొక తరగతి పైన ఒక తరగతి యొక్క రూపకల్పనలో ఒక తరగతి సృష్టించబడుతున్న పరిస్థితి మీకు ఉంది. మీరు ఒక నోడ్‌ను ఉపయోగిస్తే జాబితా కార్యాచరణ మీరు జాబితాను దాని స్నేహితుడిగా (నోడ్) ప్రకటిస్తే ఖచ్చితంగా అమలు చేయడం చాలా సులభం అవుతుంది, తద్వారా ఇది జాబితా యొక్క మొత్తం లోపలి భాగంలో చూడవచ్చు.
ఇది మరొక పరిస్థితి.
మూడవది, మేము ఇంకా చర్చించలేదు, కాని నేను ఆపరేటర్లను వారి ఆపరేటర్లలో కొంతమందితో ఓవర్‌లోడ్ చేయడానికి ప్రయత్నించినప్పుడు, సరైన సింటాక్స్ మరియు సెమాంటిక్స్‌తో ఓవర్‌లోడ్ చేయడం చాలా కష్టం, మనకు ఫ్రెండ్ (ఫ్రెండ్) రకం కార్యాచరణ ఉంటే C ++ లో అందుబాటులో లేదు.
నిర్దిష్ట వినియోగదారు నిర్వచించిన తరగతుల కోసం మీరు వాటిని ఓవర్‌లోడ్ చేసినప్పుడు అవుట్పుట్ స్ట్రీమింగ్ ఆపరేటర్ల పరంగా మేము చూపిస్తాము, కాని సాధారణంగా మీరు స్నేహితుడు (స్నేహితుడు) ఫంక్షన్ మరియు ఫ్రెండ్ క్లాస్‌ని ఉపయోగించాల్సి ఉంటుంది. కేసు చాలా జాగ్రత్తగా ఉండాలి, పరిమితం మరియు సంప్రదాయవాదంగా ఉండాలి మీకు ఈ విభిన్న పరిస్థితులలో ఒకటి ఉందని మీరు నిజంగా నిర్ధారించుకోవాలి మరియు ఇది వాస్తవానికి జరిగే కొన్ని సంబంధిత పరిస్థితులలో ఒకటి కావచ్చు, లేకపోతే మీరు స్నేహితుడిగా (స్నేహితుడు) లక్షణంగా లేదా తరగతి స్నేహితుడిగా పనిచేస్తే డిజైన్‌ను సత్వరమార్గం చేయండి, మీరు అసలు వస్తువు క్రింద ఉన్న ఎన్‌క్యాప్సులేషన్‌ను విచ్ఛిన్నం చేస్తున్నారు, ఓరియంటెడ్ ఫ్రేమ్‌వర్క్‌కు వ్యతిరేకంగా వెళ్తాము, ఇది యాక్సెస్ స్పెసిఫైయర్ యొక్క నిర్వచనం మరియు వస్తువుల సృష్టి ద్వారా మేము చాలా జాగ్రత్తగా నిర్మిస్తున్నాము.
అందువల్ల, స్నేహితుడు (స్నేహితుడు) ఒక శక్తివంతమైన లక్షణం మరియు ఏదైనా శక్తివంతమైన ఆయుధం వలె, ఏదైనా శక్తివంతమైన ఆయుధం వలె, దీనిని చాలా జాగ్రత్తగా మరియు న్యాయంగా ఉపయోగించాలి.
ఈ మాడ్యూల్‌లో, మేము ఫ్రెండ్ ఫంక్షన్ మరియు ఫ్రెండ్ క్లాస్ అనే భావనను క్లుప్తంగా పరిచయం చేసాము మరియు మాతృక ఫంక్షన్ మరియు రిస్క్ మానిప్యులేషన్ ఉదాహరణలతో ఫ్రెండ్ ఫంక్షన్ () యొక్క ఫంక్షన్‌ను పరిచయం చేసాము. ఫ్రెండ్ ఫంక్షన్) మరియు ఫ్రెండ్ క్లాస్, మరియు ఫ్రెండ్ అని మేము ప్రత్యేకంగా పేర్కొన్నాము వేరొక రకమైన దృశ్యమానత మరియు కొంత ప్రమాదకరమైనది, ఇది ఏకపక్షంగా ఉన్నందున ఉపయోగించటానికి ప్రమాదకరమైనది, ఈ పద్ధతి ఎన్‌క్యాప్సులేషన్‌ను విచ్ఛిన్నం చేస్తుంది మరియు అందువల్ల స్నేహితుడిని చాలా వివేకవంతమైన డిజైన్‌తో సరైన డిజైన్ సమర్థనతో ఉపయోగించాలి, ఎందుకు విచ్ఛిన్నం కావాలి అనే దానిపై.
మీరు ముందుకు వెళ్లి, చాలా రూపకల్పన మరియు అమలు చేయడం ప్రారంభించినప్పుడు, మీరు స్నేహితుడిని ఉపయోగించాల్సిన రకాన్ని మేము ఎల్లప్పుడూ కనుగొంటాము. నేను ఇక్కడ చర్చించిన మూడు పరిస్థితులలో ఇది ఒకటి అవుతుంది, మరియు మీరు కనుగొంటే ఒకటి కావాలి, మేము చర్చించిన మూడు మాదిరిగా లేని పరిస్థితిలో ఫ్రెండ్ ఫంక్షన్ లేదా ఫ్రెండ్ క్లాస్ వాడాలి, అప్పుడు మీరు చాలా జాగ్రత్తగా మరియు జాగ్రత్తగా ఉండాలి మరియు ఇది ఒక స్నేహితుడు ఉపయోగించాల్సిన పరిస్థితి అని తనను తాను ఒప్పించుకోవాలి.