C++のリロードデフォルトパラメータとネーミングスペース
何度か筆記試験に参加したが、c++の問題がたくさん詰まっていることに気づいた.これからc++を攻撃します.その後、c++学習ノートを続々と更新します.まず、私が勉强している本について话します.しばらくはこれらの本を読んで独学しています.
#1.C++紹介.
c++紹介
CはほとんどC++のサブセットなので、C言語でサポートされる構文はC++で基本的にサポートされ、使用する必要があります.Cプラスプラスプラス(C++)なので、Cに基づいて新しい特性がたくさんあります.
#2.C++がリロードをサポートする理由C言語はサポートされていません--リロードとは何かに重点を置きます.C++は、パラメータリストが異なる限り、複数の関数に同じ名前を付けることができます.これが関数のリロードです.リロードにより、1つの関数名にはさまざまな用途があります.例を挙げます.
これが関数のリロードです.リロードサポート関数のパラメータリストが異なります.パラメータリストとは、パラメータのタイプとパラメータの数です.パラメータのタイプがちょっとわかりにくいです.例を挙げる.
#3.デフォルトパラメータ定義:関数のパラメータを宣言するときにデフォルト値を指定し、関数を呼び出すときにデフォルト値を使用すると、パラメータを指定する必要はありません.栗を見てください.
結果関数が定義時にデフォルト値を与え、呼び出し時にパラメータが渡されたら実パラメータ、渡されなければデフォルト値を使用します.この役割は,クラスの構造関数を後で学習するのに役立つ.もちろんデフォルトパラメータにも一定のルールがあります.呼び出すときは最後のパラメータから省略するしかありません.言い換えれば、パラメータを省略する場合は、デフォルト値のあるパラメータをパラメータテーブルの一番後ろに置く必要があります.デフォルト値は定数でなければなりません.明らかに、これはデフォルトパラメータのデータ型を制限し、例えば動的配列とインタフェースタイプのデフォルトパラメータ値はnilのみである.レコードタイプについては、デフォルトのパラメータとしては使用できません.デフォルトのパラメータは、値パラメータまたは定数パラメータで渡す必要があります.
#4.ネーミングスペース
キーワードnamespaceで開始し、名前空間の名前を付けます.
ネーミングスペースの名前は、その役割ドメインで一意です.ネーミングコントロールは、グローバル役割ドメインまたは他の役割ドメインの内部で定義できますが、関数またはクラスの内部で定義できません.▶各ネーミングスペースは役割ドメインです.これにより、C言語でのネーミング競合の問題は発生しません.上のコードのように2つの変数aがありますが、名前の競合は発生しません.▶ネーミングスペースの外部からネーミングスペースメンバーを使用する:
これでいいです.以上の実行結果:
注:ネーミングスペースの役割ドメインはセミコロンで終わることはできません.
#コラムリンク:https://blog.csdn.net/column/mycolumn.html
#1.C++紹介.
c++紹介
CはほとんどC++のサブセットなので、C言語でサポートされる構文はC++で基本的にサポートされ、使用する必要があります.Cプラスプラスプラス(C++)なので、Cに基づいて新しい特性がたくさんあります.
#2.C++がリロードをサポートする理由C言語はサポートされていません--リロードとは何かに重点を置きます.C++は、パラメータリストが異なる限り、複数の関数に同じ名前を付けることができます.これが関数のリロードです.リロードにより、1つの関数名にはさまざまな用途があります.例を挙げます.
void Func( )
{
int x = 0, y = 0;
x = x + y;
}
void Func(int x, int y)
{
int sum = x + y;
}
int main( )
{
Func( );
Func(4,5);
return 0;
}
これが関数のリロードです.リロードサポート関数のパラメータリストが異なります.パラメータリストとは、パラメータのタイプとパラメータの数です.パラメータのタイプがちょっとわかりにくいです.例を挙げる.
func(int x,int y);
func(int x,char y);
func(char x,int y);
。 。
また、なぜC言語がリロードをサポートしていないのか、c++がこれをサポートしているのか、最下位のアセンブリコード(linuxプラットフォームの下でアセンブリコードを表示し、それぞれgccとg++コンパイルを採用している)を見てみましょう.gccは一度に持参し、g++は自分でインストールする必要があります.インストールは入力するだけです.yum install gcc gcc-c++
以下は実行過程です.図からわかります.C言語とc++は下位層の関数解析規則が異なり,C言語はスレーブリロードをサポートしない.#3.デフォルトパラメータ定義:関数のパラメータを宣言するときにデフォルト値を指定し、関数を呼び出すときにデフォルト値を使用すると、パラメータを指定する必要はありません.栗を見てください.
int Add1(int a, int b)
{
return a + b;
}
int Add2(int a, int b = 1)
{
return a + b;
}
int main( )
{
printf("%d
",Add1(1, 2));
printf("%d
", Add2(1));
printf("%d
", Add2(1,2));
system("pause");
return 0;
}
結果関数が定義時にデフォルト値を与え、呼び出し時にパラメータが渡されたら実パラメータ、渡されなければデフォルト値を使用します.この役割は,クラスの構造関数を後で学習するのに役立つ.もちろんデフォルトパラメータにも一定のルールがあります.呼び出すときは最後のパラメータから省略するしかありません.言い換えれば、パラメータを省略する場合は、デフォルト値のあるパラメータをパラメータテーブルの一番後ろに置く必要があります.デフォルト値は定数でなければなりません.明らかに、これはデフォルトパラメータのデータ型を制限し、例えば動的配列とインタフェースタイプのデフォルトパラメータ値はnilのみである.レコードタイプについては、デフォルトのパラメータとしては使用できません.デフォルトのパラメータは、値パラメータまたは定数パラメータで渡す必要があります.
#4.ネーミングスペース
キーワードnamespaceで開始し、名前空間の名前を付けます.
namespace myname1
{
int a = 1;
}
namespace myname2
{
int a = 5;
}
ネーミングスペースの名前は、その役割ドメインで一意です.ネーミングコントロールは、グローバル役割ドメインまたは他の役割ドメインの内部で定義できますが、関数またはクラスの内部で定義できません.▶各ネーミングスペースは役割ドメインです.これにより、C言語でのネーミング競合の問題は発生しません.上のコードのように2つの変数aがありますが、名前の競合は発生しません.▶ネーミングスペースの外部からネーミングスペースメンバーを使用する:
myname1::a;
変数を使用する場合は、役割ドメイン制限子を追加します.▶ネーミングスペースは定義をネストできます.namespace myname2
{
int a = 5;
namespace myname3
{
int a = 10;
}
}
これでいいです.以上の実行結果:
注:ネーミングスペースの役割ドメインはセミコロンで終わることはできません.
#コラムリンク:https://blog.csdn.net/column/mycolumn.html