2012-12-04 27 views
8

मैंने अभी सी ++ की शुरुआती पुस्तक के माध्यम से जाना शुरू कर दिया है। मैं कुछ जावा अनुभव है (लेकिन कहा कि, मैं जावा में डिफ़ॉल्ट तर्क उपयोग नहीं किया है ईमानदार होना)क्या मैं डिफ़ॉल्ट तर्कों का गलत इस्तेमाल कर रहा हूं?

तो, के रूप में उल्लेख किया है, मेरी समस्या डिफ़ॉल्ट तर्क के साथ है ..

यह कोड स्निपेट है मैं उपयोग कर रहा हूँ:

#include <iostream> 

using namespace std; 

//add declaration 
int add(int a, int b); 

int main (void) 
{ 
     int number1; 

     cout << "Enter the first value to be summed: "; 
     cin >> number1; 
     cout << "\nThe sum is: " << add(number1) << endl; 
} 

int add(int a=10, int b=5) 
{ 
     return a+b; 
} 

प्रतिक्रिया मैं जी से प्राप्त ++ संकलक है: "बहुत कुछ तर्क कार्य करने के लिए '(int, int) जोड़ने int'

मैं इस गलत कर रहा हूँ (मैंने? शाब्दिक तर्कों के साथ भी कोशिश की)

पीएस मुझे कोड स्निपेट ठीक से प्रदर्शित करने के लिए प्रतीत नहीं होता है? क्या सिस्टम बदल गया है?

+4

डिफ़ॉल्ट तर्क घोषणा में जाते हैं। और कोड को प्रारूपित करने के लिए, इसे पेस्ट करें, कोई बैकटिक्स न रखें, इसे हाइलाइट करें, और {} बटन पर क्लिक करें। – chris

+2

सभी सज्जनो धन्यवाद। मैं इस तथ्य की सराहना करता हूं कि इस समुदाय द्वारा सेकंड के भीतर मुझे हल किया जा सकता है। – yoonsi

उत्तर

14

यह दूसरी तरह के आसपास

//add declaration 
int add(int a=10, int b=5); 


int add(int a, int b) 
{ 
    return a+b; 
} 

§ 8.3.6 डिफ़ॉल्ट तर्क है एक डिफ़ॉल्ट तर्क केवल एक समारोह घोषणा के पैरामीटर-घोषणा-खंड में या एक टेम्पलेट में निर्दिष्ट किया जाएगा पैरामीटर। एक डिफ़ॉल्ट तर्क पैरामीटर पैक के लिए निर्दिष्ट नहीं किया जाएगा।

+7

यदि आप जानना चाहते हैं, ऐसा क्यों है क्योंकि संकलक को कॉलिंग साइट पर डिफ़ॉल्ट मानों को जानने की आवश्यकता है। समारोह का शरीर पूरी तरह से एक और फाइल में हो सकता है ताकि जानकारी उपलब्ध न हो। –

+0

नोटिंग के लायक भी, परिवर्तनीय नाम, इस मामले में 'ए', केवल फ़ंक्शन परिभाषा में आवश्यक है (जो आसान पढ़ने और संपादन के लिए प्रदान करता है, खासकर जब .h और .cpp फ़ाइलों पर अलग हो जाता है)। घोषणा इस तरह दिखेगी: 'int add (int = 10, int = 5);' और परिभाषा हेडर बस 'int add (int a, int b) 'होगा। इसके अलावा, आपको परिभाषा में पैरामीटर सूची के बाद अर्ध कोलन लेना चाहिए। –

+0

@LoganBesecker, अच्छी जगह, तय, धन्यवाद – billz