प्रौद्योगिकी साझेदारी

c इत्यस्य प्रथमः परिचयः (नामस्थानं, पूर्वनिर्धारितमापदण्डाः, कार्यस्य अतिभारः)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. नामस्थानम्

1. नामस्थानस्य अर्थः

C/C++ इत्यस्मिन् पश्चात् शिक्षितव्याः चराः, फंक्शन्, क्लास् च बहुसंख्याकाः सन्ति ।

स्थानीयव्याप्तौ अनेके विग्रहाः उत्पद्यन्ते ।नामस्थानानां उपयोगस्य उद्देश्यं नामकरणं परिहरितुं परिचयकानां नामानि स्थानीयकरणं भवति

द्वन्द्वः अथवा नामप्रदूषणं, namespac कीवर्डः एतस्याः समस्यायाः निवारणाय दृश्यते ।

C भाषा परियोजनासु निम्नलिखितप्रोग्राम इव नामकरणविग्रहाः सामान्यसमस्याः सन्ति C++ इत्यनेन तेषां समाधानार्थं namespac इति परिचयः कृतः ।

एतादृशी समस्या: (दोषः प्रतिवेदितः यतः वयं यत् rand इति चरं सेट् कृतवन्तः तत् stdlib.h इत्यस्मिन् rand फंक्शन् इत्यनेन सह विग्रहं करोति)

#include <stdio.h>
#include <stdlib.h>
int rand = 10;
int main()
{
	// 编译报错:error C2365: “rand”: 重定义;以前的定义是“函数”
	printf("%dn", rand);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2. नामस्थानस्य परिभाषा

1. नामस्थानं परिभाषितुं भवद्भिः नामस्थानस्य कीवर्डस्य उपयोगः करणीयः, तदनन्तरं नामस्थानस्य नाम, ततः {} इत्यस्य युग्मं संयोजयितुं आवश्यकम्, यत्र {}

नामस्थानस्य सदस्य इत्यर्थः । नामस्थाने चराः/कार्यं/प्रकाराः इत्यादयः परिभाषितुं शक्यन्ते ।(द्रष्टव्यं यत् {} इत्यस्य अनुसरणं ";" न भवति)

2. नामस्थानस्य सारः अस्ति यत् एतत् डोमेन् वैश्विकक्षेत्रात् स्वतन्त्रम् अस्ति, अतः निम्नलिखितम्

उपरिष्टाद् राण्डः पुनः विग्रहे नास्ति ।

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
namespace tmp
{
	int rand = 0;
}
int main()
{
	printf("%dn", rand);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3. C++ इत्यस्मिन् डोमेन् मध्ये फंक्शन् लोकल डोमेन्, ग्लोबल डोमेन्, नेमस्पेस् डोमेन्, क्लास् डोमेन् च सन्ति, डोमेन् एकं चर/फंक्शन्/ अन्वेष्टुं संकलन-समयस्य वाक्यविन्यासं प्रभावितं करोति;

प्रकारमूलस्य तर्कः (घोषणा वा परिभाषा), डोमेनपृथक्करणेन सह, नामविग्रहाः निराकृताः भवन्ति ।स्थानीयक्षेत्रं वैश्विकक्षेत्रं च प्रभावितं कर्तुं अतिरिक्तं

अन्वेषणतर्कस्य संकलनं चरघोषणचक्रं अपि प्रभावितं करिष्यति तथा च वर्गक्षेत्राणि चरघोषणचक्रं न प्रभावितयन्ति ।

4. नामस्थानं केवलं वैश्विकरूपेण परिभाषितुं शक्यते, अवश्यं च तत् नेस्ट् अपि कर्तुं शक्यते ।

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
namespace tmp
{
	int rand = 0;
	namespace tmp1
	{
		int Add(int left, int right)
		{
			return left + right;
		}
		struct Node
		{
			struct Node* next;
			int val;
		};
	}

}
int main()
{
	printf("%dn", rand);
	return 0;
}
  • 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

5. परियोजनायां बहुषु सञ्चिकासु परिभाषितं समाननामयुक्तानि नामस्थानानि एकं नामस्थानम् इति गण्यन्ते, तेषां विग्रहः न भविष्यति ।

test.c सञ्चिका

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include"test.h"
namespace tmp
{
	int rand = 0;
	namespace tmp1
	{
		int Add(int left, int right)
		{
			return left + right;
		}
		struct Node
		{
			struct Node* next;
			int val;
		};
	}

}
int main()
{
	printf("%dn", tmp::d);
	return 0;
}
  • 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

test.h सञ्चिका

#pragma once
namespace tmp
{
	int d = 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5

tmp स्पेस मध्ये d चरं .c सञ्चिकायां उपयोक्तुं शक्यते इति ज्ञातुं शक्यते ।

6. C++ मानकपुस्तकालयः std (standard) इति नामस्थाने स्थापितः भवति ।

7. यदि वयं वैश्विकक्षेत्रे चरानाम् उपयोगं कर्तुम् इच्छामः तर्हि एतत् कर्तुं शक्नुमः :

int a = 3;
int main()
{
	int a = 0;
	printf("%dn", ::a);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

एवं प्रकारेण printf प्रथमं 3 मुद्रयति ।

3. नामस्थानस्य उपयोगः

चरस्य घोषणां/परिभाषां अन्वेष्टुं संकलनं कुर्वन् पूर्वनिर्धारितरूपेण केवलं स्थानीयरूपेण वा वैश्विकरूपेण वा अन्वेषणं करिष्यति, न तु नामस्थाने ।अतः

निम्नलिखितप्रोग्रामः संकलितं कृत्वा त्रुटिं प्रतिवेदयिष्यति ।

namespace tmp
{
	int d = 0;
	namespace tmp1
	{
		int Add(int left, int right)
		{
			return left + right;
		}
		struct Node
		{
			struct Node* next;
			int val;
		};
	}
}
int main()
{
	int a = 0;
	printf("%dn", d);//未定义标识符d
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

अतः अस्माभिः नामस्थाने परिभाषितानि चराः/फंक्शन्स् उपयोक्तव्याः सन्ति ।

1. नामस्थानप्रवेशं निर्दिशन्तु परियोजनायां एषा पद्धतिः अनुशंसिता अस्ति।

tmp::d
  • 1

2. उपयोगेन नामस्थानस्य सदस्यं विस्तारयति ।परियोजनायाः बहुधा प्रवेशितानां सदस्यानां कृते एषः उपायः अनुशंसितः यस्य विग्रहः नास्ति ।

namespace tmp
{
	int d = 0;
	namespace tmp1
	{
		int Add(int left, int right)
		{
			return left + right;
		}
		struct Node
		{
			struct Node* next;
			int val;
		};
	}
}
using tmp::d;
int main()
{
	int a = 0;
	printf("%dn", d);//未定义标识符d
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3. नामस्थाने सर्वान् सदस्यान् विस्तारयन्तु, .परियोजना न अनुशंसिता यतोहि द्वन्द्वस्य जोखिमः अधिकः भवति दैनिक अभ्यासकार्यक्रमः सुविधायै अनुशंसितः अस्ति।

namespace tmp
{
	int d = 0;
	namespace tmp1
	{
		int Add(int left, int right)
		{
			return left + right;
		}
		struct Node
		{
			struct Node* next;
			int val;
		};
	}
}
using namespace tmp;
int main()
{
	int a = 0;
	printf("%dn", d);//未定义标识符d
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2. निवेशः निर्गमः च

1. इदं Input Output Stream इत्यस्य संक्षिप्तनाम अस्ति इदं एकं मानकं input and output stream library अस्ति यत् मानक input and output इति परिभाषयति ।

out object इति ।

2. std::cin istream वर्गस्य एकं वस्तु अस्ति, यत् मुख्यतया संकीर्णवर्णानां (char प्रकारस्य) मानकनिर्गमं प्रति उन्मुखं भवति ।

प्रवाहः ।

3. std::cout ostream वर्गस्य एकं वस्तु अस्ति, यत् मुख्यतया संकीर्णवर्णानां मानकनिर्गमधारा प्रति उन्मुखं भवति ।

4. std::endl एकं फंक्शन् अस्ति यदा स्ट्रीम आउटपुट् मध्ये सम्मिलितं भवति तदा तत् newline character सम्मिलितं कृत्वा बफरं ताजगीकृत्य तुल्यम् अस्ति ।

5. &lt;&lt; धाराप्रवेशसञ्चालकः, &gt;&gt; च धारानिष्कासनसञ्चालकः । (C language इत्यपि एतयोः ऑपरेटर्योः उपयोगं कृत्वा bitwise operations यथा left shift/right shift इत्यादीन् करोति)

6. इनपुट् तथा आउटपुट् कृते C++ इत्यस्य उपयोगः अधिकं सुविधाजनकः अस्ति printf/scanf input and output इत्यादीनां प्रारूपं मैन्युअल् रूपेण निर्दिष्टुं आवश्यकता नास्ति ।

आउटपुट् स्वयमेव चरप्रकारस्य परिचयं कर्तुं शक्नोति(अनिवार्यतया, एतत् फंक्शन् ओवरलोडिंग् इत्यनेन प्राप्तं भवति वस्तुतः, सर्वाधिकं महत्त्वपूर्णं वस्तु अस्ति यत् C++ स्ट्रीम्स् अनुकूलनस्य समर्थनं अधिकतया कर्तुं शक्नुवन्ति ।

ऑब्जेक्ट्स् input and output इति टङ्कयन्तु ।

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
namespace tmp
{
	int a = 0;
	double b = 0.0;
	char c = '0';
	namespace tmp1
	{
		int Add(int left, int right)
		{
			return left + right;
		}
		struct Node
		{
			struct Node* next;
			int val;
		};
	}
}
using namespace tmp;
using namespace std;
int main()
{
	cin >> a >> b >> c;
	cout << a << b << c;
	return 0;
}
  • 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

7. cout/cin/endl इत्यादयः सर्वे C++ मानकपुस्तकालयस्य सन्ति C++ मानकपुस्तकालयः std (standard) इति नामस्थाने स्थापितः अस्ति, अतः एतत् आवश्यकम् अस्ति

नामस्थानस्य उपयोगेन तान् उपयुज्यताम् ।

8、1सामान्यदैनिकव्यायामेषु वयं namespace std इत्यस्य उपयोगं कर्तुं शक्नुमः, परन्तु वास्तविकपरियोजनाविकासे namespace std इत्यस्य उपयोगः अनुशंसितः नास्ति ।

3. पूर्वनिर्धारितमापदण्डाः

1. पूर्वनिर्धारितमापदण्डानां परिभाषा नियमाः च

पूर्वनिर्धारितमापदण्डाः कार्यस्य घोषणां कुर्वन् अथवा परिभाषयन्ते सति कार्यस्य मापदण्डानां कृते पूर्वनिर्धारितं मूल्यं निर्दिशन्ति ।एतत् फंक्शन् आह्वयति समये, यदि वास्तविकं पैरामीटर् निर्दिष्टं न भवति

ततः औपचारिकपैरामीटर् इत्यस्य पूर्वनिर्धारितं मूल्यं उपयुज्यते, अन्यथा निर्दिष्टं वास्तविकं पैरामीटर् उपयुज्यते । (केषुचित् स्थानेषु, २.

पूर्वनिर्धारितमापदण्डाः पूर्वनिर्धारितमापदण्डाः अपि उच्यन्ते) ।

पूर्णपूर्वनिर्धारितस्य अर्थः अस्ति यत् सर्वेषां औपचारिकमापदण्डानां पूर्वनिर्धारितमूल्यानि दत्तानि सन्ति, अर्धपूर्वनिर्धारितस्य च अर्थः अस्ति यत् केचन औपचारिकमापदण्डाः पूर्वनिर्धारितमूल्यानि दत्तानि सन्ति ।C++ इत्यनेन निर्धारितं यत् अर्धपूर्वनिर्धारितमापदण्डाः दक्षिणतः वामपर्यन्तं भवितुमर्हन्ति

क्रमेण निरन्तरं पूर्वनिर्धारितं, अन्तरालेषु पूर्वनिर्धारितं मूल्यं गन्तुं न शक्नोति ।

पूर्वनिर्धारितमापदण्डैः सह फंक्शन्-आह्वानस्य कृते C++ इत्यनेन निर्धारितं यत् वास्तविक-मापदण्डाः वामतः दक्षिणतः क्रमेण दातव्याः, वास्तविक-मापदण्डाः च त्यक्तुं न शक्यन्ते ।

यदा फंक्शन् घोषणा परिभाषा च पृथक् भवति तदा फंक्शन् घोषणा परिभाषा च द्वयोः मध्ये पूर्वनिर्धारितमापदण्डाः न दृश्यन्ते

मूल्यम्‌।

#include <iostream>
using namespace std;
void Func(int a = 0)
{
	cout << a << endl;
}
int main()
{
	Func(); // 没有传参时,使⽤参数的默认值
	Func(10); // 传参时,使⽤指定的实参
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

2. पूर्णपूर्वनिर्धारितं अर्धपूर्वनिर्धारितं च

#include <iostream>
using namespace std;
// 全缺省
void Func1(int a = 10, int b = 20, int c = 30)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;
}
// 半缺省
void Func2(int a, int b = 10, int c = 20)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;
}
int main()
{
	Func1();
	Func1(1);
	Func1(1, 2);
	Func1(1, 2, 3);
	Func2(100);
	Func2(100, 200);
	Func2(100, 200, 300);
	return 0;
}
  • 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

अर्धपूर्वनिर्धारितं एवं लिखितुं न शक्यते ।

void Func2(int a = 10, int b, int c = 20)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;
}
//或者
void Func2(int a = 10, int b, int c)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

अवश्यं सख्यं पालनम् : १.

अर्धपूर्वनिर्धारितमापदण्डाः दक्षिणतः वामपर्यन्तं निरन्तरं पूर्वनिर्धारिताः भवितुमर्हन्ति, अन्तरालेषु पूर्वनिर्धारितमूल्येषु त्यक्तुं न शक्यन्ते ।

3. पूर्वनिर्धारितमापदण्डानां व्यावहारिकप्रयोगः

C++ ज्ञातुं पूर्वं यदा वयं stack initialization and insertion इत्येतत् कार्यान्वितवन्तः तदा वयं एतत् लिखितवन्तः ।

typedef int STDataType;
typedef struct Stack
{
	STDataType* a;
	int top;
	int capacity;
}ST;
// 栈顶
void STInit(ST* ps, int n)
{
	assert(ps);
	ps->a = (STDataType*)malloc(n * sizeof(STDataType));
	ps->top = 0;
	ps->capacity = n;
}
void STPush(ST* ps, STDataType x)
{
	assert(ps);
	// 满了, 扩容
	if (ps->top == ps->capacity)
	{
		printf("扩容n");
		int newcapacity = ps->capacity == 0 ? 4 : ps->capacity
			* 2;
		STDataType* tmp = (STDataType*)realloc(ps->a,
			newcapacity * sizeof(STDataType));
		if (tmp == NULL)
		{
			perror("realloc fail");
			return;
		}
		ps->a = tmp;
		ps->capacity = newcapacity;
	}
	ps->a[ps->top] = x;
	ps->top++;
}
  • 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

यदि वयं १०० दत्तांशखण्डान् सम्मिलितुं इच्छामः तर्हि अस्माकं निरन्तरविस्तारस्य कुशलहानिः च आवश्यकी भविष्यति, परन्तु पूर्वनिर्धारितमापदण्डान् ज्ञात्वा वयं एतादृशं लिखितुं शक्नुमः ।

// 栈顶
void STInit(ST* ps, int n = 4)
{
	assert(ps);
	ps->a = (STDataType*)malloc(n * sizeof(STDataType));
	ps->top = 0;
	ps->capacity = n;
}
void STPush(ST* ps, STDataType x)
{
	assert(ps);
	// 满了, 扩容
	if (ps->top == ps->capacity)
	{
		printf("扩容n");
		int newcapacity = ps->capacity == 0 ? 4 : ps->capacity
			* 2;
		STDataType* tmp = (STDataType*)realloc(ps->a,
			newcapacity * sizeof(STDataType));
		if (tmp == NULL)
		{
			perror("realloc fail");
			return;
		}
		ps->a = tmp;
		ps->capacity = newcapacity;
	}
	ps->a[ps->top] = x;
	ps->top++;
}
int main()
{
	ST a;
	STInit(&a, 100);//这里不传100也可以,因为规定必须从左到右依次给实参,不能跳跃给实参。刚好和缺省参数确定位置互补
	for (int i = 0; i < 100; i++)
	{
		STPush(&a, i);
	}
	return 0;
}
  • 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

एतेन प्रभावीरूपेण पुनः पुनः स्थानं उद्घाटयितुं समस्या परिहृता भवति ।

4. कार्य अतिभार

C++ एकस्मिन् व्याप्ते दृश्यमानानां समाननामयुक्तानां कार्याणां समर्थनं करोति, परन्तु समाननाम्ना एतेषां कार्याणां औपचारिकमापदण्डाः भिन्नाः भवेयुः इति आवश्यकम् एतत् भिन्नसङ्ख्यायाः मापदण्डानां वा भवितुम् अर्हति

विभिन्न प्रकार। एवं प्रकारेण C++ फंक्शन् कॉल्स् बहुरूपी व्यवहारं प्रदर्शयन्ति तथा च उपयोगाय अधिकं लचीलाः भवन्ति । (किन्तु, भिन्नानि रिटर्न्-मूल्यानि अतिभार-स्थितिरूपेण उपयोक्तुं न शक्यन्ते ।

यतः आह्वानकाले तस्य भेदः कर्तुं न शक्यते, यदि रिटर्न् वैल्यू तथा पैरामीटर् प्रकारः अथवा नम्बरः एकस्मिन् समये परिवर्तते तर्हि इदमपि ओवरलोड् कण्डिशन् अस्ति) ।

1. विभिन्नाः पैरामीटर् प्रकाराः

#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}
double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2. पैरामीटर्-सङ्ख्या भिन्ना भवति

// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)
{
	cout << "f(int a)" << endl;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

विशेषतः यदि उपर्युक्तविधिः पूर्वनिर्धारितमापदण्डानां उपयोगं करोति तर्हि मापदण्डान् विना आह्वानं कुर्वन् त्रुटिः निवेदिता भविष्यति संकलकः कस्मै आह्वानं कर्तव्यम् इति न जानाति ।

// 下⾯两个函数构成重载
// f()但是调⽤时,会报错,存在歧义,编译器不知道调⽤谁
void f1()
{
	cout << "f()" << endl;
}
void f1(int a = 10)
{
	cout << "f(int a)" << endl;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3. पैरामीटर्-क्रमः भिन्नः भवति (वास्तवतः पैरामीटर्-प्रकाराः भिन्नाः सन्ति) ।

// 3、参数类型顺序不同
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}
double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}
// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)
{
	cout << "f(int a)" << endl;
}
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;
}
int main()
{
	Add(10, 20);
	Add(10.1, 20.2);
	f();
	f(10);
	f(10, 'a');
	f('a', 10);
	return 0;
}
`#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}
double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}
// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)
{
	cout << "f(int a)" << endl;
}
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;
}
int main()
{
	Add(10, 20);
	Add(10.1, 20.2);
	f();
	f(10);
	f(10, 'a');
	f('a', 10);
	return 0;
}``

  • 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

परिणाम:
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु