C ++学習記録(3)

- 動的なメモリ割り当て


new演算子

オペレータは、動的なメモリ割り当てを実装するための新しい方法です。
  • 最初の使用
    変数の動的メモリ空間に割り当てられました

フォーマット

P=new T;
Tは任意の型の名前であり、Pはポインタ型のTです*
意味:動的に割り当てられたサイズsizeof(T)のメモリバイト、およびP.に割り当てられたメモリ空間の先頭アドレス
例:
int *pn;
pn=new int;
*pn=5;
  • 第2の使用
    ダイナミックメモリ空間の配列に割り当てられました
    フォーマット
P=new T[N]
ここで、Tは、任意の型の名前であり、P *はポインタ型Tであり、Nは、整数で表現することができ、割り当てられる配列要素の数です。
意味:N * siziof(T)の動的割り当てのサイズは、メモリのバイト、及び開始アドレスがメモリ空間に割り当てられたP.
  • 例えば動的に割り当てられたアレイ
int *pn;
int i=5;
pn=new int [i*20];
pn[0]=20;
pn[100]=100;//编译时不会出错,运行时会出现数组越界现象
  • new演算子戻り値の型

    new T;
    new T [n];

    二以上の発現戻り値の型はTです*

delete演算子

メモリ割り当てがありますが、それは自然にメモリを解放します
新しい割り当てられたメモリのタイムリーなリリースがなければ、蓄積していき、最終的に別のプログラムを実行したい場合があります、それはメモリ不足になります。
  • 削除リリースメモリ変数
    フォーマット

    delete 指针;//该指针必须指向new分配出来的空间

int *p=new int;
*p=5;
delete p;
delete p;//导致异常,一片空间不能被delete多次
  • 動的に割り当てられた配列の解放を削除
    動的に割り当てられたメモリアレイの「削除」のリリースでは「] [」追加します
    フォーマット

    delete [] 指针;//该指针必须指向new出来的数组

    例:
int *p=new int [20];
p[0]=1;
delete [] p;

インライン関数、関数のオーバーロード、関数のデフォルト値

  • インライン関数

    あなたが知る必要があるすべての最初に、呼び出す関数は、関数呼び出しの時間のオーバーヘッドでは、スタック内で機能を実行するための関数のアドレスにジャンプするので、パラメータ、戻り値、およびを取ります。
    コストは小さな思えるが、彼らは自分自身の関数呼び出しである場合にのみ、いくつかの文であり、時間のオーバーヘッドが小さいので、小さな文による複数回、呼び出されたときに、その後、時間の関数を呼び出すのオーバーヘッドが非常に大きく、コントラストになりますありCの効率の非常に追求のため++、これは、交通機関や健康への耐え難い、したがって、インライン関数です。
    コール文インライン関数を処理するためのコンパイラは、時間オーバーヘッド関数呼び出しを排除文呼び出しに挿入されたコード全体の関数です。
  • 定義方法
    関数定義追加する前にinlineキーワードを、あなたは、インライン関数を定義することができます
    例:
inline int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
-場合はk=max(n1,n2);呼び出しは同等です
if(n1>n2)
tmp=n1;
else
tmp=n2;
k=tmp;

  • 重み関数(チョン)が含まれています:

- 定義:1または同じ名前のより多くの機能、または異なるパラメータとパラメータの種類の数。
例:次の三つの機能がオーバーロードされている関係
int max(double f1,double f2){}
int max(int n1,int n2){}
int max(int n1,int n2,int n3){}
- 利点:このよう上記MAX1、MAX2、MAX3、そのような区別名前再利用しないように簡略化命名、。
- コンパイラは、引数の数と型がステートメントが呼び出される関数で決定されるべき呼び出しです。
例:
max(3.4,2.5);//调用第一个
max(2,4);//调用第二个
max(1,2,3);//调用第三个
max(3,2.4);//error,二义性
同じ関数名の場合は、パラメータの数が同じと関数のパラメータ、戻り値のみ異なる機能の種類の機能は、重複定義と呼ばれます。

  • 関数のデフォルトパラメータ

C ++、位置が書き込みパラメータに適切でない場合は、関数を呼び出すときに、右端のパラメータの数がデフォルト値を持つことができます連続関数の定義、パラメータはデフォルト値です。

例:
void func(int x1,int x2=2,int x3=3){}
func(10);//等价于func(10,2,3)
func(10,8);//等价于func(10,8,3)
func(10,,8);//不行!只能是最右边的连续若干参数缺省

- メモしておいてください:連続したパラメータのデフォルトの唯一の一番右の数!

- 利点:あなたは、プログラムのスケーラビリティを向上させることができます
- なぜあなたは言うのですか?
書かれた関数は、通常の機能に応じて、新しいパラメータを追加する必要がある場合、ので、我々は確かに一つ一つがデフォルトパラメータであれば、その後、しかし、新しいパラメータを追加し、見つけるために、この機能の一つを持ちたいですあなたは大幅に効率を改善するために変更の量を減らすこと、すべての変更を見つける必要はありません。

おすすめ

転載: www.cnblogs.com/2002ljy/p/12244016.html