Default Parameters and Function Overloading (Lecture 12)-uJGmGAShHeU 47.3 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
 C ++ లో ప్రోగ్రామింగ్లో మాడ్యూల్ 8 కు స్వాగతం.
 C ++ యొక్క ఉత్తమ C ఫీచర్లను( features) మేము చేస్తున్నాము, మేము ఇప్పటికే కాన్స్టేట్( const) మరియు వోలటైల (volatile) మరియు మాక్రోస్ (macros), ఇన్లైన్ ఫంక్షన్లు మరియు రిఫరెన్స్ వేరియబుల్(reference variable) గురించి కూడా ప్రస్తావించాము మరియు రిఫరెన్స్ ద్వారా సూచన మరియు రిఫరెన్స్ ద్వారా కాల్ చేయండి.
 ఇవి C ++ యొక్క అన్ని మంచి సి లక్షణాలు.
 ఇప్పుడు ఈ మాడ్యూల్ 8 లో, డిఫాల్ట్ పారామితులు( default parameter) మరియు ఫంక్షన్ ఓవర్లోడింగ్ (function overloading) గురించి మాట్లాడండి.
 C ++ భాష యొక్క ఆబ్జెక్ట్ ఓరియెంటెడ్ ప్రాపర్టీలను ( object oriented properties)ఎనేబుల్ (enable)చేయుటకు రెండు చాలా ముఖ్యమైన చాలా ముఖ్యమైన లక్షణాలు.
 ఇది ప్రదర్శన యొక్క ఎడమ పానెల్లో (panel) మీరు చూస్తున్న ఈ మాడ్యూల్ యొక్క మొత్తం ఆకారం అవుతుంది.
 కాబట్టి, మేము ఇప్పుడు ప్రారంభించాము.
 ఇప్పుడు, ముందుగా మనము డిఫాల్ట్ పారామితుల(default parameters) గురించి చర్చించాము మరియు నేను సి నుండి ఒక ఉదాహరణతో మొదలు పెడతాను, ముఖ్యంగా ఇది MSDN, విండోస్ ప్రోగ్రామింగ్( windows programming) నుండి ఒక ఉదాహరణ.
 మీరు ఒక గ్రాఫిక్స్ ప్రోగ్రామింగ్ (graphics programming) మరియు విండోస్ గురించి తెలిసి ఉంటే, మీరు ఈ ఫంక్షన్ని చూడవచ్చు, మీరు దీనిని చూడకపోతే, ఇది నిజంగా పట్టింపు లేదు.
 నేను ఎడమ కాలమ్లో చూపించదలచినది అన్నింటికీ సృష్టించే విండో ఫంక్షన్(window function) నమూనా లేదా శీర్షిక.
 మీరు ఫంక్షన్ పెద్ద సంఖ్యలో చూడగలరు; ప్రత్యేకించి, నమూనాలో దాని వివరణ కోసం 11 వివిధ పారామితులు.
 మీరు ఒక గ్రాఫిటీ విండోను సృష్టించాల్సినప్పుడు సృష్టించిన విండో ఫంక్షన్ను కాల్ చేయడానికి మీరు ఈ 11 పరామితులను పేర్కొనవలసి ఉంటుంది.
 కుడి నిలువు కాలమ్లో లో నేను విండోను రూపొందించడానికి ఒక విలక్షణ సృష్టి విండో విండోను చూపుతాను.
 ఇప్పుడు, ఈ ప్రత్యేక విధిని పరిగణనలోకి తీసుకుంటే మీరు రెండు విషయాలు చూడగలరు; ఒకటి పారామితులు పెద్ద సంఖ్యలో ఉంది, 11 పారామితులు మరియు మీరు సాధారణంగా ఈ 11 పారామితులు అర్థం తెలుసుకోవాలి ఈ ఉపయోగించడానికి మరియు మీరు ఆ పారామితులు పేర్కొనాలి ఉంటుంది.
 ఇప్పుడు, మీరు కేవలం నమూనా విండోని సృష్టించాలనుకుంటున్నారా, డిఫాల్ట్ బ్యాక్గ్రౌండ్( default background) రంగు, డిఫాల్ట్ టెక్స్ట్(default text) కలర్, మీరు మానిటర్లో డిఫాల్ట్ సెంటర్ లొకేషన్లో (default center location)ఒక విండో కావాలనుకోండి, మీరు డిఫాల్ట్ వెడల్పు(default width) మరియు ఎత్తు( height) 
 మరియు అందువలన న.
 మీరు అన్ని విభిన్న విలువలను పేర్కొనడానికి అవసరమైన అవసరం ఉండకపోవచ్చు; ఈ 11 పారామీటర్లలో(parameters) మీ అప్లికేషన్లకు(applications) ప్రత్యేకమైనవి.
 సో, మీరు అసలు కాల్ లోకి చూస్తే మీరు కాల్ లో అనేక పారామితులు ఉన్నాయి అని చూసే సులభతరం; మీరు ఇక్కడ పరామితులను చూస్తే, ఇవి ప్రాథమికంగా మానిఫెస్ట్ స్థిరాంకాలు( manifest constants)అయినవి, విండో వాడకం డిఫాల్ట్ సృష్టించడానికి CW ని సూచిస్తుంది.
 ఇది అప్పటికే లైబ్రరీలో నిర్వచించిన కొన్ని డిఫాల్ట్ విలువ(default value) ఉంది కాబట్టి మీరు ఆ విలువలను ఉపయోగించవచ్చు.
 కాబట్టి ప్రాథమికంగా, మీరు ఆ విలువలను సరఫరా చేయలేదు.
 అదేవిధంగా, మీరు విండో పేరెంట్ మరియు మెనూలో చూస్తే లేదా విండో పారామితులలోకి చూస్తున్నట్లయితే మనం కేవలం శూన్యాన్ని పంపుతున్నాము, ఇది ప్రాథమికంగా ఒక రకమైన డిఫాల్ట్ విలువ.
 hInstance, విండో యొక్క ఉదాహరణ.
 మీకు తెలిసిన విండో ప్రోగ్రామింగ్(programming) మీకు తెలిస్తే మీ అప్లికేషన్ (application)యొక్క ఒక ఉదాహరణ ఇది కూడా ఒక రకమైన డిఫాల్ట్ విలువలను(default value) పొందుతుంది, కాబట్టి మీరు సృష్టించే విండో రకంతో మీరు ఒక అతివ్యాప్తి చెందిన విండోను సృష్టించి, దానితోనే ఉంటుంది.
 ఈ 11 పారామితులు ఫంక్షన్ లో ఉన్నప్పటికీ మరియు మీరు వాటిని అన్ని పేర్కొనండి అవసరం అనేక లైబ్రరీ ద్వారా డిఫాల్ట్ విలువలు ఇవ్వబడ్డాయి లేదా శూన్య వంటి పాస్ మరియు మీరు నిజంగా మీ విండో తరగతి ఏమిటి వంటి కొన్ని విషయాలు పేర్కొనాలి ఏ మీరు చేస్తున్న నిర్దిష్ట నిర్మాణం మరియు ఈ కాల్ చేయడానికి విండో పేరు బహుశా.
 అయితే ఇంకా, మొత్తం పదకొండు పారామీటర్ల పూర్తిస్థాయిలో పిలవబడాలి.
 మీరు పారామీటర్లను ఒక విధంగా ఏర్పాటు చేయగలిగితే, మీ కాల్స్ కోసం మీరు పేర్కొన్న పరామితులను మాత్రమే కాల్ దృష్టిలో ఇవ్వాలి.
 వ్యవస్థకు కొన్ని డిఫాల్ట్ విలువలను పేర్కొనకుండానే సాధారణంగా డిఫాల్ట్ పారామితులను(default parameters) అర్థం చేసుకుని, తీసుకుంటే, ప్రతిసారీ మీరు ఆ పిలుస్తారు.
 కాబట్టి, C ++ మాకు దీని గురించి ఏదో చేయటానికి అనుమతిస్తుంది మరియు ఆ లక్షణాన్ని డిఫాల్ట్ పారామిటర్ అని పిలుస్తారు.
 ఇప్పుడు, ఇక్కడ డిఫాల్ట్ పారామీటర్ల అర్ధం వివరించడానికి ఒక ఉదాహరణ.
 ఈ ఫంక్షన్(function) పరిగణించండి, కార్యాచరణ నిజంగా చాలా ముఖ్యమైనది కాదు, మేము దీనిని ఐడెంటిటీఫాంక్షన్గా (identity function)పిలుస్తున్నాము, అది పరామితిని తీసుకుంటుంది మరియు అదే పారామీటర్ను తిరిగి అందిస్తుంది.
 కానీ మనము హైలైట్ చేయటానికి ఆసక్తి కలిగి ఉన్నాము, మీరు ఇక్కడ గమనించవలసిన అవసరం ఉంది, పరామితి యొక్క ప్రాధమిక విలువ యొక్క పారామితి యొక్క ఫంక్షన్ యొక్క సంతకంలో ఇచ్చిన విలువను a.
 ఇప్పుడు, ఒక నిర్దిష్ట పరిధిలోని వేరియబుల్ (variables)యొక్క ప్రాధమిక విలువ ఏమంటే, ఒక పారామితి కోసం ప్రారంభ లేదా డిఫాల్ట్ యొక్క రకమైన అర్ధం ఏమిటి.
 మాకు కాల్ చేద్దాం అని అర్థం చేసుకోవడానికి, మాకు ఫంక్షన్ యొక్క మొదటి కాల్ కు చూద్దాం.
 ఫంక్షన్ యొక్క మొదటి కాల్ మేము గుర్తింపు విలువను వాస్తవంగా పారామితికి పిలుస్తాము x ఇది ప్రస్తుతం విలువ 5 కలిగి ఉంది, కనుక మనం ఇక్కడ ఆ పారామితిని పంపుతున్నాము మరియు అందువల్ల ఇది అదే విలువను ఇస్తుంది మరియు మీరు ఈ లైన్ నుండి అవుట్పుట్(output) చేస్తారు మరియు మీరు పొందుతారు ఈ సమయంలో అవుట్పుట్ యొక్క మొదటి పంక్తి.
 ఈ పాయింట్( point)వరకు ఆశ్చర్యం లేదు.
 ఇప్పుడు, మనము అదే ఫంక్షన్ యొక్క రెండవ కాల్ పై దృష్టి పెట్టండి.
 ఏ పరామితి లేకుండా ఈ ఫంక్షన్ కాల్ చేయవచ్చని గమనించడానికి మీరు ఆశ్చర్యపోతారు.
 మేము ఇప్పటివరకు C లో ఉన్నాము, అసలు పరామితుల సంఖ్య మరియు అధికారిక పారామితుల సంఖ్య కాల్ మరియు ఫంక్షన్ యొక్క ప్రోటోటైప్(prototype) మధ్య సరిపోవాలి.
 వాస్తవమైన పారామితులు మరియు ఫార్మల్ పారామితులు(formal parameters) వారి క్రమంలో, వారి డేటా టైప(data type) లో మరియు దానితో సరిపోలాలి.
 కానీ ఇక్కడ, ఫంక్షన్ నిజానికి ఒక పారామీటర్ ఉంది, కానీ నేను ఇక్కడ కాల్ చేసినప్పుడు నేను పారామితి పేర్కొనడం లేదు.
 ఈ డిఫాల్ట్ పారామితి ఫీచర్ (default parameter feature)ఏమిటి.
 C ++ ఏమి చేస్తుంది? మీరు ఏ పరామితి లేకుండానే కాల్ చేసివుండటం వలన మరియు ఫంక్షన్ ఇప్పటికే పారామితి విలువ డిఫాల్ట్ విలువ(default value) 10 తో నిర్వచించబడటం వలన ఇక్కడ మీరు ఈ డిఫాల్ట్ విలువతో ఫంక్షన్ అని పిలిచినట్లు మీరు భావిస్తారు.
 కాబట్టి, మీరు పారామితి డిఫాల్ట్ చేస్తే, మీరు నిజంగా రెండు ఎంపికలు పొందుతారు; ఒకటి, ఇక్కడ మీరు ఫంక్షన్ కాల్ చేయగలిగేలా మీరు ఫంక్షన్ పిలుపునిచ్చారు, వాస్తవ పారామితిని పేర్కొనడం లేదా మీరు పారామీటర్ యొక్క డిఫాల్ట్ విలువను ఉపయోగించి ఎంపిక చేసుకోవచ్చు మరియు పేర్కొనవలసిన అవసరం లేదు
 వాస్తవమైన పారామితి మీరు దాటవేయవచ్చు.
 వ్యవస్థ మీరు పారామితిని వాడుతున్నారని మరియు ఫంక్షన్ డిక్లరేషన్(function declaration) లో డిఫాల్ట్ లో ఇవ్వబడిన విలువను నిర్దేశిస్తుంది.
 కాబట్టి, ఇది డిఫాల్ట్ పారామితి(default parameter) యొక్క ప్రాథమిక లక్షణం.
 ఇప్పుడు మనం ముందుకు వెళ్దాము మరియు మరో ఉదాహరణ చూద్దాము.
 గత ఉదాహరణలో, మనము ఒక ఫంక్షన్ ను అప్రమేయ పారామితి కలిగివున్నాము మరియు ఇప్పుడు మీకు డిఫాల్ట్ పరామితి మాత్రమే వుంటుంది, అది మీకు అప్రమేయ పారామితులు అప్రమేయ పారామీటర్ల సంఖ్య ఏకపక్ష సంఖ్య.
 మనము ఇక్కడ ఒక ఫంక్షన్ చూపుతాము, ఈ యొక్క కార్యాచరణ గురించి, దీని కోసం అల్గోరిథం గురించి ఆందోళన చెందకండి, అది కేవలం రెండు పారామితులను వాటిని జతచేస్తుంది మరియు వాటిని తిరిగి పంపుతుంది, ఇక్కడ ఈ ఫంక్షన్ నిర్వచనాన్ని చూడండి, మరియు ఇది రెండు పారామితులను కలిగి ఉంటుంది integerకి; int a మరియు int b.
 మరియు మనం చేసిన పారామితులు ప్రతి ప్రారంభ విలువతో డీఫాల్ట్ చేయబడ్డాయి.
 కాబట్టి, ఈ ఫంక్షన్ ను వాడేటప్పుడు మరియు కాల్ చేస్తే మీరు మొదటి కాల్ని చూస్తే, మొదటి కాల్ అనేది సాధారణ ఫంక్షన్ కాల్ (function call), x మరియు y రెండు వాస్తవ పారామితులు.
 X (y,y)ను జోడించాము, కాబట్టి x అక్కడ 'a' కు కాపీ చేయబడుతుంది, మీరు చూడగలిగిన విలువను కాల్ చేస్తారు, y b కు కాపీ చెయ్యబడింది మరియు function is x మరియు y విలువలు మరియు 5 మరియు 6 మరియు అందువలన మీరు ఇక్కడ మొత్తాన్ని ప్రింట్ చేస్తే మొత్తం మొదటి అవుట్పుట్(output) అవుతుంది, ఇది మొత్తం 11 అవుతుంది.
 ఇప్పుడు, అదే ఫంక్షన్ యొక్క రెండవ కాల్ చూడండి.
 ఈ ఫంక్షన్ యొక్క రెండవ కాల్ లో, మనము మొదటి పారామితి x ను అందిస్తాము కానీ మనము రెండవ పరామితిని అందించలేదు, అనగా ఫంక్షన్ వాస్తవానికి రెండు పారామితులను కలిగి ఉంటే, దానిని ఒక పరామితితో పిలుస్తాము.
 కాబట్టి, ఏమి జరుగుతుంది? మేము x కు అనుగుణంగా అందించిన ఈ పరామితి, అధికారిక పరామితికి అనుగుణంగా ఉంటుంది, అందుచే x యొక్క విలువను విలువలో కాల్ ద్వారా కాపీ చేయబడుతుంది. 
 కానీ రెండవ పరామితి అందించబడలేదు, కాబట్టి మీరు రెండవ పరామితి యొక్క డిఫాల్ట్ విలువను( default value) ఉపయోగిస్తున్నారని సిస్టమ్ (system)అర్థం అవుతుంది, అనగా రెండవ పరామితి 20 గా ఉంటుంది, ఎందుకంటే రెండవ పరామితిలో ఇచ్చిన డిఫాల్ట్ విలువ (default value)20.
 అందువలన, ఈ సందర్భంలో ఫంక్షన్ a తో 5 మరియు b' గా 10 వరకు కొనసాగుతుంది మరియు అది గణన అవుతుంది మరియు మీరు అవుట్పుట్(output) నుండి చూడవచ్చు, + b 25 గా లెక్కించబడుతుంది మరియు అది ముద్రితమవుతుంది.
 మేము దీనిని మరింత విస్తరించవచ్చు.
 మేము వాస్తవమైన పారామీటర్ను(parameter) అందించని కాల్ యొక్క మూడవ ఉదాహరణలో మనం ఏమి చేస్తాము.
 కాబట్టి, ఫంక్షన్ యొక్క రెండు పారామితులు, మరియు b రెండూ వాటి డిఫాల్ట్ విలువలను(default value) తీసుకుంటాయి, అంటే 'a' is 10 మరియు b 20 మరియు ఇది ఇక్కడ ఉన్న ఫంక్షన్ నిజంగా కనిపించదు, కానీ ఇక్కడ ఫంక్షన్ 30 ను కొంత ఫలితంగా ముద్రిస్తుంది.
 మనము చూడగలము, నేను తప్పకుండా ఒక పారామితి మాత్రమే తప్పనిసరిగా ఉండవలసిన అవసరం లేదు, కానీ అది ఒక ఫంక్షన్లో పారామితుల యొక్క ఏకపక్ష సంఖ్యను నేను డిఫాల్ట్ చేయగలము.
 మరియు పారామితులు యొక్క మంచి సమితి తరచూ పనిచేయడానికి అప్రమేయ విలువను తీసుకునే పారామితుల సంఖ్యతో ప్రత్యేకంగా రాయడం చాలా ఉపయోగకరంగా ఉంటుంది.
 మేము డిఫాల్ట్ పారామితుల(default parameter) గురించి ప్రాథమిక అంశాలను హైలైట్(highlight) చేస్తాము, అది C ++ ప్రోగ్రామర్లు ఫంక్షన్ పారామీటర్లకు డిఫాల్ట్ విలువలను కేటాయించటానికి అనుమతిస్తుంది, మీరు దీనిని చూశారు.
 ఫంక్షన్ను ప్రోటోటిఫై చేస్తున్నప్పుడు అప్రమేయ విలువలు తెలుపబడును.
 ఫంక్షన్ ప్రోటోటైపింగ్, అంటే ఏమిటి అంటే మీరు చూసినట్లుగా ఫంక్షన్ సంతకం లో( function signature) డిఫాల్ట్ విలువలను వ్రాస్తారు.
 తక్కువ ఆర్గ్యుమెంట్స్తో(arguments) లేదా వాదన లేకుండానే ఫంక్షన్ను కాల్ చేస్తున్నప్పుడు డిఫాల్ట్ పారామితులు అవసరమవుతాయి, అందువల్ల వారు కాల్ సైట్లో లేనప్పుడు వారి డిఫాల్ట్ విలువతో ఉపయోగించిన ఒకటి లేదా రెండు పారామితులు ఎలా ఉన్నాయో మేము చూసాము.
 వంటిఒక అభ్యాసం, ఖచ్చితంగా ఏ పారామితులు అప్రమేయంగా ఉండాలి మరియు పారామితులు అప్రమేయంగా ఉండకూడదు అని చెప్పలేము.
 కానీ ఒక సాధనంగా మీరు తక్కువగా ఉపయోగించిన పారామీటర్ల కోసం డిఫాల్ట్ విలువలను ఉపయోగించడం మంచిది, అయితే మీరు నిజంగానే అన్ని పారామీటర్ల కోసం డిఫాల్ట్ విలువను ఉపయోగించవచ్చు.
 డిఫాల్ట్ వాదనలు, మీరు ఫంక్షన్ను డిఫాల్ట్ వాదనలు అని పిలుస్తున్నప్పుడు లేదా డిఫాల్ట్ విలువలు కూడా సంకలనం సమయంలో గణించబడేంత కాలం కూడా వ్యక్తీకరణగా ఉండవచ్చు.
 నేను డిఫాల్ట్ పారామితులుగా 2 +3 వంటి డిఫాల్ట్ విలువలను కలిగి ఉండవచ్చు.
 ఇది ఒక ఫంక్షన్కు చెల్లుతుంది, నేను 2+ 3 వంటి డిఫాల్ట్ విలువను కలిగి ఉంటుంది, కంపైలర్(compiler) ఏమి చేయాలో, కంపైల్ చేస్తున్నప్పుడు అది 2 +3 ను గణించడం అవుతుంది మరియు డిఫాల్ట్ విలువ 5 గా సెట్ చేయబడుతుంది.
 ఒక డిఫాల్ట్ విలువను కలిగి ఉండరాదు, ఇది సంకలనం సమయంలో వ్యక్తీకరణగా ఉండదు, అది n + ని, స్థిరమైన విలువగా, నిరంతర integerగా నిర్వచించబడకపోతే, 2 + n అని చెప్పవచ్చు.
 ఎందుకంటే n వేరియబుల్(variable) అయితే కంపైలర్ మీ ప్రోగ్రామ్ను కంపైల్ చేసే సమయానికి మీకు తెలియదు.
 ఇప్పుడు మనం చూడాలనుకుంటున్నాము, అది నేను కోరుకున్న విధంగా ఒక ఫంక్షన్ యొక్క పారామితులను డీఫాల్ట్ చేయగలగడానికి, లేదా మనం అనుసరించాల్సిన కొన్ని ప్రాథమిక నియమాలు లేదా పరిమితులు ఉన్నాయి .
 కాబట్టి, మేము డిఫాల్ట్ పారామితుల యొక్క కొన్ని ప్రాథమిక నియమాలను డిస్కస్ (discuss) చేస్తాము.
 మొదటి నిబంధన చాలా ముఖ్యమైనది అప్రమేయ వాదనతో పరామితికి అన్ని పరామితులు డిఫాల్ట్ వాదనలు కలిగి ఉండాలి.
 ఈ నియమం కోసం, ఈ ప్రత్యేక ఫంక్షన్ చూడండి.
 మేము ఫంక్షన్ f గురించి మాట్లాడుతున్నాము ఇది మూడు పారామితులు కలిగి, Int, డబుల్(double), మరియు పాత్రకు పాయింటర్(pointer).
 ఈ సందర్భంలో మేము రెండవ పరామితికి డిఫాల్ట్ విలువను అందించాము, ఎందుకు చార్( char) * అనే మూడవ పారామితికి ఏ డిఫాల్ట్ విలువను అందించలేదు.
 మీరు ఇలా చేస్తే అప్పుడు కంపైలర్ మీకు error ఇస్తాడు మరియు ఈ సందర్భంలో, నేను ఒక కంపైలర్ నుండి దోషం చూపించాను, ఈ పరామితికి పారామీటర్ (parameter) మూడు కోసం డిఫాల్ట్ పారామితి లేదు అని చెప్పేది.
 కాబట్టి, నేను ఏదైనా ఫంక్షన్ వ్రాస్తే మరియు నేను ఒక పారామీటర్ కలిగి ఉంటే, రెండు పారామితి, మూడు పారామీటర్, మరియు కొన్ని పారామితి డిఫాల్ట్ (parameter default)ఉంటే అప్పుడు అన్ని పారామితులు తర్వాత నేను వ్రాసే అన్ని పారామితులు ఈ అన్ని తరువాత డిఫాల్ట్ పారామితి అప్రమత్తంగా ఉండాలి; తరువాతి మనం అంతా డిపాజిట్(deposit) చేయాల్సినంత వరకు అన్నింటినీ డిపాజిట్ చేయాలి.
 లేకపోతే, కంపైలర్ మీరు నిజంగా ఏ పారామీటర్లను ఉపయోగిస్తున్నారో పరిష్కరించలేరు.
 కాబట్టి మొదటి నియమం, అది మనకు పరామితికి డిఫాల్ట్ అయ్యాక అది అన్ని పారామితులను కలిగివుండేది డిఫాల్ట్ విలువలను పొందాలి. 
 ఇక్కడ రెండవ పాలన ఉంది, డిఫాల్ట్ పారామితులు పునర్నిర్వచించలేవు.
 మీరు చూడండి, ఈ రెండు పంక్తులు చెప్పండి.
 ఇక్కడ మొదటగా మనము ఒక ఫంక్షన్ f ను నిర్వచించాము, ఇది మూడు పారామితులను మళ్ళీ, Int, డబుల్ మరియు చార్ *, మరియు రెండు పారామితులు రెండవ పరామితి 0 కు మరియు మూడవ పరామితిని ఒక శూన్య పాయింటర్కు (pointer)అప్రమేయంగా మార్చాయి, ఇది ఓకే, సహజంగా.
 తరువాత, మేము మళ్ళీ అదే చర్య ప్రోటోటైప్ g గురించి మాట్లాడుతున్నాము, కానీ, మీరు ఈ రెండు విలువలతో చూస్తే, ఇప్పుడు మేము రెండవ పరామితి కోసం డిఫాల్ట్ విలువను ఉపయోగిస్తున్నాము.
 కాబట్టి, ఇది అనుమతించబడదు, మీరు కేవలం ఒక ఫంక్షన్ యొక్క పారామితి విలువను మాత్రమే ఒకసారి డిఫాల్ట్ చేయవచ్చు.
 మీరు డీఫాల్ట్ చేసిన తర్వాత మళ్ళీ మీరు డిఫాల్ట్ పరామితి విలువను పేర్కొనలేరు.
 ఇప్పుడు మీరు ఈ సందిగ్ధత అని అనుకుంటారు, ఎందుకంటే మీరు సున్నాకు డబుల్ డీఫాల్ట్ చేసి, మీరు రెండు డిఫాల్ట్ విలువలను ఉపయోగించారని మీరు జాగ్రత్తగా చూస్తున్నట్లయితే మీరు డబుల్ డీఫాల్ట్ చేసి, కంపైలర్ ఇక్కడ చూపిన ఈ error ఇవ్వడం పారామితి రెండు error, కానీ యాదృచ్ఛికంగా కంపైలర్ నిజానికి మీరు అందించిన డిఫాల్ట్ వాస్తవ విలువను చూడండి లేదు.
 దీన్ని అర్థం చేసుకోవడానికి, దయచేసి మీ దృష్టిని మూడవ పరామితి యొక్క డిఫాల్ట్ విలువకు( default value) దృష్టి పెట్టండి.
 ఇక్కడ మూడవ పారామిటర్ ప్రారంభంలో మొదటి సందర్భంలో శూన్యంగా ఇవ్వబడింది మరియు రెండో కేసు అది మళ్లీ శూన్యంగా పునర్నిర్వచించబడుతుంది కాబట్టి మీరు నిజంగానే అదే డిఫాల్ట్ విలువను తదుపరి సమయంలో ఉపయోగిస్తున్నారు.
 కానీ కూడా, కంపైలర్(compiler) గందరగోళం అవుతుంది మరియు పారామీటర్ మూడు కోసం డిఫాల్ట్ పారామితి పునర్నిర్వచించబడిందని, అది ఇప్పటికే నిర్వచించబడిందని మరియు మళ్లీ నిర్వచించబడుతుందని మరియు ఇది అనుమతించబడదు అని మీకు చెప్పబడుతుంది.
 మీరు ఇంతకు ముందు నిర్వచించబడిన అదే విలువతో డిఫాల్ట్ విలువను తిరిగి నిర్వచించాలో లేదో లేదా మీరు ఇంతకు ముందు ఉపయోగించిన వేరొక విలువను ఉపయోగించి డిఫాల్ట్ విలువను తిరిగి నిర్వచించటం లేదో పట్టింపు లేదు, రెండు సందర్భాలలో ఈ అనుమతి లేదు.
 కాబట్టి డిఫాల్ట్ పారామితులను వాడుతున్న చోట్ల డిఫాల్ట్ వాదనలు పునర్నిర్వచించబడవు, ఈ నియమం సంఖ్య రెండు.
 మీరు డిఫాల్ట్ పారామీటర్లను ఉపయోగిస్తున్నప్పటి నుండి వాటిని కాల్ సమయంలో పేర్కొనడానికి ఎంచుకోవచ్చు లేదా మీరు కాల్ సమయంలో వాటిని పేర్కొనలేదని మూడవ నియమం చెబుతుంది.
 కాబట్టి, మనము ఫంక్షన్ g యొక్క సందర్భంలో చూస్తే, ఖచ్చితంగా ఈ ఖచ్చితమైన నిర్వచనాన్ని అనగా ఖచ్చితమైన నిర్వచనంగా చెప్పండి, అప్పుడు ఈ మూడు కాల్స్ చెల్లుబాటు అయ్యేవి అని నేను చూడగలను, అంటే నేను ఒక పారామితి గ్రా(i)ఇది మొదటిగా తీసుకోబడుతుంది లేదా నేను మొదటి రెండు పారామితులను i మరియు d తో పిలుస్తాము, ఇది Int మరియు డబుల్( double) లేదా నేను మూడు పారామితులతో కాల్ చేయవచ్చు.
 ముగ్గురూ బాగున్నారు.
 మీరు ఏదైనా పరామితి లేకుండా ఫంక్షన్ గ్రాని కాల్ చేయడానికి ప్రయత్నిస్తే, అది ఒక error అవుతుంది ఎందుకంటే మీరు ఈ పారామితి లేకుండా ఈ ఫంక్షన్ కాల్ చేయవలసి ఉంటే, అప్పుడు మొదటి పారామితి ఈ సందర్భంలో చేయబడలేదు.
 కాబట్టి, ఒక ఫంక్షన్ యొక్క కొన్ని పారామితులు డిఫాల్ట్ విలువలకు ఇచ్చినట్లయితే కనీసం అన్ని అప్రమేయ పారామీటర్లను( parameters) వాస్తవ పారామితులుగా మరియు డిఫాల్ట్ పారామితులుగా పేర్కొనవలసి ఉంటుంది, డిఫాల్ట్ పారామీటర్ల విషయంలో మీకు ఎంపిక ఉంది మరియు మీరు పేర్కొనవచ్చు వాటిలో ఏదీ లేదా వాటిలో ఏదీ కాదు, కానీ వాటిలో కొన్నింటిని మీరు పేర్కొన్నట్లయితే, మీరు ఎల్లప్పుడూ నియమాన్ని అనుసరించాల్సి ఉంటుంది, మీరు వాటిని ఎడమవైపున సరైన క్రమంలో పేర్కొనవలసి ఉంటుంది.
 ఇక్కడ నేను అనుకుందాం, మీరు ఈ ప్రత్యేకమైన వివరణను పరిశీలిస్తే, నాకు శుభ్రం చేసి మళ్ళీ చూపించాను అని పేర్కొనడం చేస్తున్నాను, మీరు ఈ కాల్స్లోకి చూస్తున్నారా అనుకుందాం, ఇక్కడ ఫంక్షన్ మూడు పారామీటర్లను( parameters) కలిగి ఉంది కానీ మనము ఈ రెండింటిని పేర్కొంటున్నాము.
 కాబట్టి, ఇక్కడ వాటిలో మొదటిది తప్పనిసరిగా నాన్-డిఫాల్ట్ పారామితి( non-default parameter), ఇది తప్పనిసరిగా అవసరం మరియు రెండో పరామితి మీరు పేర్కొన్నట్లు డబల్ గా తీసుకోబడుతుంది.
 ఇప్పుడు, మీరు నేను కాల్ లాగా కాల్ చేయడానికి ప్రయత్నిస్తాను అనుకుంటాను ఈ కాల్, నేను పూర్ణాంకానికి వెళ్తానని అర్థం, ఇది మూడవ పారామితి చార్( char)* కోసం వెళ్తుంది మరియు మధ్యలో డబుల్ విలువ 0.0 గా తీసుకోబడుతుంది.
 ఇది సాధ్యం కాదు, ఇది error.
 దీనికి కారణమేమిటంటే కంపైలర్ రెండు డీఫాల్ట్ పారామీటర్ల (default parameter) మధ్య డబుల్ మరియు చార్ * ల మధ్య తెలుసుకోవటానికి ఎటువంటి మార్గం లేదు, మీరు ఇక్కడ పేర్కొనబడినది మరియు మీరు ఇక్కడ పేర్కొన్నది ఏది.
 మీరు ఈ పారామితులను వాడుతుంటే, మీరు ఒక నిర్దిష్ట క్రమంలో డిఫాల్ట్ విలువలను ఉపయోగించవచ్చు, వాస్తవానికి ఇచ్చిన పారామితులు కాల్ నుండి ఎడమ నుండి కుడికి సరిపోల్చాలి, మీరు దాటవేయగల పాయింట్ తర్వాత మాత్రమే ఉంటుంది అన్ని పారామితులు ఆ పారామితి యొక్క కుడి వైపున, కానీ మధ్య నుండి ఏదో దాటవేయి లేదు.
 కాబట్టి, ఇవి డిఫాల్ట్ పారామితులు( default parameter) అనుసరించాల్సిన కొన్ని ప్రాథమిక నియమాలు.
 ఇక్కడ, మనం మరొకదాన్ని చూపిస్తాము; ఇది సరిగ్గా భాష యొక్క నిర్వచనం ద్వారా నియమం కాదు కానీ నేను ఈ విధంగానే మీరు డిఫాల్ట్ పారామితులను ఉపయోగించి ఎలా చేయాలో ఆచరణలో చూపించాను.
 కాబట్టి, అతను అప్రమేయ పారామితులు మాత్రమే హెడ్డర్ ఫైల్లో సరఫరా చేయాలి మరియు ఫంక్షన్ నిర్వచనంలో కాదు, మీరు డిఫాల్ట్ పారామీటర్ చేస్తున్నట్లయితే, ఇది మీకు డిఫాల్ట్ పేర్కొనడానికి ఉన్న ఒక శీర్షిక ఫైల్ ఉంటే ఈ నిర్వచనమేమిటంటే, ఆ ఫంక్షన్ కోసం శరీరాన్ని అందించిన ఫంక్షన్ను నిర్వచించిన మూలం ఫైల్.
 కాబట్టి మనం ఏమి చెప్తున్నామో మీరు ఏ డిఫాల్ట్ పరామితిని ఎక్కడా పేర్కొనకూడదు లేదా ఎక్కడో వేరే ఎక్కడైనా మీరు ఈ ఫంక్షన్ను ఉపయోగించి ఇక్కడ చెప్పండి.
 ఇప్పుడు, మనము ఏమి జరుగుతుందో చూద్దాం, ఈ ఫంక్షన్ నమూనాలో ఇవ్వబడుతుంది మరియు ఇది ఒక దరఖాస్తు కోడ్, ఇది ఒక ఫంక్షన్ వాడుతూ వున్న ఒక అప్లికేషన్ కోడ్( code) కాబట్టి ఇది ఈ ప్రత్యేక ఫంక్షన్ నిర్వచనం, ఈ ప్రత్యేక ఫంక్షన్ నమూనా చేర్చబడింది.
 ఇప్పుడు మీరు ఈ వంటి ఏదో రాయడానికి కావలసిన మీ అప్లికేషన్ యొక్క శరీరం అనుకుందాం, ఆశ్చర్యకరంగా ఈ అన్ని ఆమోదయోగ్యమైన అన్ని ఈ అంగీకరించబడుతుంది.
 కాబట్టి, మీరు ఇక్కడ ఏమి చెప్తున్నారో, మీరు శీర్షిక నుండి మూడవ పారామితి అప్పటికే డిఫాల్ట్(default) అయ్యిందని, ఇప్పుడు మీరు నా రెండవ పారామీటర్ కూడా డిఫాల్ట్ అయ్యారని చెపుతున్నారు.
 కాబట్టి ఇప్పుడు నాకు ఉంది; నా ఫంక్షన్ గ్రా, కాబట్టి ఈ రెండు కలిసి నిజానికి అర్థం నా ఫంక్షన్ గ్రా రెండు దాని యొక్క పారామితులు డిఫాల్ట్ మరియు అందువలన న.
 అదేవిధంగా, ఇక్కడ మూడవ సందర్భంలో, మొదటి పారామితి కూడా డీఫాల్ట్ చెయ్యబడింది.
 అప్రమేయ పారామితి విశేషణము దానిని చేయుటకు అనుమతించును, కానీ మీరు వుపయోగిస్తున్నప్పుడు మీకు ఇబ్బంది ఉండదు, అప్రమేయ నిర్వచనములోని భాగము హెడర్ ఫైలునందు మరియు అప్రమేయ నిర్వచనాల భాగము మీ మూలం ఫైల్, అమలు ఫైలులో వున్నది.
 కాబట్టి, ఏ పారామీటర్లు డీఫాల్ట్ చేయబడతాయో ఏ ఒక్క అంశంలోనైనా మీకు తెలియదు మరియు ఏ విలువలు అవి డిఫాల్ట్ (default) అవుతాయి.
 కాబట్టి, అన్ని డిఫాల్ట్లను వాడాలి; మీరు ఈ వంటి ఏదో చేయాలని ఉంటే వాటిని అన్ని శీర్షిక ఫైళ్ళకు తరలించబడింది చేయాలి కాబట్టి ఒక సమయంలో మీరు డిఫాల్ట్ పారామితులు ఉన్నాయి ఏమి చూడగలరు మరియు వారి విలువలు ఏమిటి, లేకపోతే ఈ పద్దతి యొక్క ఈ విధానం డిఫాల్ట్ పారామితులు కోడ్ వ్రాయడం నిజంగా చాలా గందరగోళంగా పొందండి.
 ఇది ఆచరణాత్మక పాయింట్ నుండి ఒక పరిమితిగా ఉంటుంది, మీరు భాషా చివరికి చూస్తే, మీరు ఈ నిర్వచనాలతో మీరు నిజంగానే నాలుగు వేర్వేరు రూపాలతో ఫంక్షన్ గ్రానికే పిలుస్తారని నేను చూపించినట్లు చూపించాయి ఎందుకంటే మూడు పారామితులు చివరికి అప్రమేయం చేయబడ్డాయి, కానీ ఒకే స్థలంలో వాటిని ఎల్లప్పుడూ అప్రమత్తంగా ఉండేలా చేస్తాయి, తద్వారా ఒకే సంతకం లో వాటిని మూడు వేర్వేరు సంతకాలలో వరుసగా మూడుసార్లు వేరు చేయటానికి బదులు వాటిని ఉపయోగించడం కోసం చాలా గందరగోళంగా మారుతుంది.
 కాబట్టి, C ++ యొక్క డిఫాల్ట్ పారామితుల( default parameter) లక్షణాన్ని మేము చూశాము మరియు దానిని ఎలా ఉపయోగించాలో మరియు మేము ఉపయోగించే పరిమితులు ఏమిటి?