[C++ を理解する] 名前空間関数は既定のパラメーターをオーバーロードします

ここに画像の説明を挿入

1. 名前空間

C 言語コードを記述する場合、プロジェクトが大きい場合、変数の名前付けの競合が発生しやすくなります。一般に 2 つの競合があります。
1. 変数名がライブラリ内の関数名およびキーワードと競合します2. プロジェクトのモジュール構築中の異なるファイルの名前の競合
この欠陥を最適化するために、C++ は名前空間の概念を提案しました。
名前空間で使用されるキーワードは、名前空間で変数/関数/型/名前空間namespaceを定義できることです同じプロジェクトの下に同じ名前の名前空間がある場合、それらは一緒にマージされます。

#include <stdio.h>
#include <iostream>

namespace  _mer
{
    
    
	int a = 2;
}

int main()
{
    
    
	printf("%d", a);
	return 0;
}

上記のコードは単純な名前空間の作成ですが、名前空間にアクセスするにはどうすればよいでしょうか? いくつかの方法があります:

  • 明らかにスペースの名前とスコープ修飾子アクセス:
namespace  _mer
{
    
    
	int a = 2;
}

int main()
{
    
    
	printf("%d", _mer::a);
	return 0;
}
  • 名前空間のメンバーをインポートするには、キーワード using を使用します。
namespace  _mer
{
    
    
	int a = 2;
}

using _mer::a;

int main()
{
    
    
	printf("%d", a);
	return 0;
}
  • 名前空間全体を解放し、using namespace を使用して名前空間をグローバル ドメインに公開します。
namespace  _mer
{
    
    
	int a = 2;
}

using namespace _mer;

int main()
{
    
    
	printf("%d", a);
	return 0;
}

2. デフォルトのパラメータ

デフォルト パラメータは、関数の設計時に仮パラメータのデフォルト値を設定するためのものです。関数を呼び出すときに、実際のパラメーターが渡されない場合は、デフォルトのパラメーターが直接使用されます。それ以外の場合は、実際のパラメーターが使用されます。

int Prin(int a = 0)
{
    
    
	return a;
}


int main()
{
    
    
	cout << Prin() << endl;
	cout << Prin(10) << endl;

	return 0;
}

ここに画像の説明を挿入

  • デフォルト パラメーターの分類デフォルト パラメーターは、完全なデフォルト パラメーター (関数のすべての仮パラメーターにデフォルト値がある) と準デフォルト パラメーター (関数のすべてのパラメーターにデフォルト値が設定されているわけではない) に分けられます
void Prin(int a = 0,int b=1,int c=2,int d=4)
{
    
    
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
	cout << d << endl << endl;

}


int main()
{
    
    
	Prin();
	Prin(10);
	Prin(10,20);
	Prin(10, 20, 30);
	Prin(10, 20, 30, 40);
	return 0;
}

ここに画像の説明を挿入
デフォルトのパラメータについて注意すべき点がいくつかあります

  1. デフォルト値は定数またはグローバル変数でなければなりません
  2. セミデフォルトパラメータは右から左に設定する必要があります
  3. デフォルトのパラメーターは、関数の宣言と定義の両方に表示することはできません。宣言でのみ指定する必要があります

3. 関数のオーバーロード

関数のオーバーロードは、C++ の重要な概念でもあります。まず
オーバーロードの条件を理解してください。ご注文とは異なりますこれは、異なるデータ型で同様の関数を実装する際の問題に対処するためによく使用されます。

void func(int a)
{
    
    
	cout << "(int a)的调用" << endl;
}
void func(double a)
{
    
    
	cout << "(double a)的调用" << endl;
}
void func(int a,double b)
{
    
    
	cout << "(int a,double b)的调用" << endl;
}
void func(double a, int b)
{
    
    
	cout << "(double a, int b)的调用" << endl;
}


int main()
{
    
    
	func(3.14,5);
	func(2);
	func(3.14);
	func(5,3.14);
	return 0;
}

: 関数のオーバーロードでデフォルト パラメータが検出されると、エラーが発生する可能性があります。

void func(int a, int b = 10)
{
    
    
	cout << "(int a)的调用" << endl;
}
void func(int a)
{
    
    
	cout << "(int a)的调用" << endl;
}
int main()
{
    
    
	func(10);
	return 0;
}

なぜ C++ が関数のオーバーロードをサポートするのかという原則 -名前の変更については、知りたい場合は検索してください。

おすすめ

転載: blog.csdn.net/qq_43289447/article/details/130175808