あなたは簡単に見つけることが、Cの++は、C ++やC言語がすべてのネイティブコンパイル言語、直接ネイティブコンパイルされたコードにコンパイルされているCにも優れているだろう++、C言語Cを再生するために学習後の学習の数の拡大に基づいてC ++言語Cは、実行すると言うことができます特に速いです。
C ++ OPPオブジェクト指向スクリプトインタプリタを持っている必要がありますJavaのPythonのPHPスクリプト(解釈)の言語から別の言語、ローカルのオペレーティング・システム上で実行されています
したがって、次の要約CおよびC ++との間の差
デフォルトのパラメータを持つ1)C ++のサポート
✅ボイド楽しい(INT A = 10、INT B)(INT B = 10 INT)楽しみをvoidに右から左へのデフォルトパラメータ値に1つの機能、❌
関数パラメータに2は、宣言時に定義することができます
コールの効率の違いと3のデフォルト値で、デフォルト値の機能がないと機能
INTの和(INT A = 10、INT B = 20 )。 INTの和(int型、int型B) { 返す + B。 } int型のmain() { SUM(10、10 )。 0AHプッシュ00FE142E 00FE1430プッシュ0AH 00FE1432コール和(0FE105Fh) 、00FE1437はESP追加の8 和()。 00FE143Aプッシュ14Hの 00FE143Cプッシュ0AH 00FE143Eコール和(0FE105Fh) 00FE1443、ESP追加8 のint = A 10 。 INT B = 10 。 和(B) 00FE1446のmov DWORD PTRを[A]、0AH 00FE144D MOVのDWORD PTR [B]、0AH 00FE1454のMOVのEAX、DWORD PTRを[B] 00FE1457プッシュEAX 00FE1458 MOV ECX、のDWORD PTR [A] 00FE145BプッシュECXの 00FE145Cコール和(0FE105Fh) 00FE1461アドオンESP、8
実質的に(10,20)を合計し、その和();差異またはデフォルト値がプッシュ操作のために使用される所定のパラメータは、CPUが命令PUSHを呼び出すは存在しません
int型A = 10、B = 20、合計が(a、b)は、上記よりも遅い効率、メモリが行くを取る、bの値は、MOV命令を増加させます
2)C ++関数のオーバーロードをサポート
なぜないのオーバーロード1、C言語をサポートしていますか?
C言語コンパイラシンボル生成機能するので、そのためだけ関数の関数名と同じにすることができない関数名を複数生成に関して定義
例えば、ボイド楽しい()_fun
C ++コンパイラで生成された関数のシンボルは、関数名と関数パラメータ、関数の同じセット異なるパラメータリスト(パラメータの数、パラメータの異なるタイプ)の名前に応じて生成されているが多重定義関数を構成することができます
ブール値(比較値int、int型B)を BOOL比較(ダブル、ダブルB)を BOOL(比較のconst のchar *、constの char型 * b)は
2コールオーバーロードされた関数は、どのような時に決定相またはステージをコンパイルするには???
論理アドレスオーバーロードされた関数呼び出し命令を決定することは、コンパイル時に機能を必要とし
図3は、多型を認識しました
静的(コンパイル時)多型:関数のオーバーロード、テンプレート
ダイナミック(ランタイム)多型:仮想関数
したがって、関数記号は、C ++ Cは考慮して統一されたネーミング機能を使用する必要があります
Cでの最初の呼び出しのC ++インタフェースは、Cインタフェースはextern「C」の下に置くべきです
C ++コードは、すべてのextern「C」{}内を入れC言語を満たすためにC煩雑インターフェースで呼び出します
複数ファイルのプロジェクトでは、プロジェクトが#ifdefの__cplusplusこのマクロを展開するすべての宣言Cの関数宣言ファイルになります、あなたは他のC / C ++プロジェクトの用途を与えることができます
3)動的なアプリケーション空間のmalloc /無料のC ++の新しい/削除の違いを
1つのmalloc関数は、Cライブラリ関数であり、new演算子があります
2のmallocメモリはバイト・アプリケーション、メモリの種類を指定するための強力な新しいアプリケーションの回転であると戻り値の型を使用して、あまりにも強いが必要値が返さターンであります
アプリケーションの初期化を担当する3のmallocメモリだけでなく、新しいアプリケーションがメモリや初期化を完了することができます
4のmallocメモリを割り当てるnullptrポインタを返すことができなかった、新しいアプリケーションのみ取り込むことによって、例外をスローすることができませんでした
5新しい根本的な事実がメモリを割り当てるmalloc関数であるが、malloc関数で最適化
自由と削除の違い
新しいオープン2次元配列のmallocのオープン2次元配列
書式#include <iostreamの> する#include <stdlib.h>に含ま する#include < 文字列の.h> の#include < malloc関数の.h> 使用して 名前空間はstd; INT のmain() { int型 ** P =(INT **)はmalloc(はsizeof(INT *)* 3 )。 int型私= 0 ; 用(; iが< 3 ; iが++ ){ P [I] =(INT *)はmalloc(はsizeof(INT)* 4)。 } INT ** S = 新しい INT * [ 3 ]。 用(i = 0 ; iは< 3 ; iは++ ){ S [i]は = 新しい INT [ 4 ](); } のための(i = 0 ; iは< 3 ; iは++ ){ フリー(P [I])。 } フリー(P)。 用(i = 0 ; iは< 3 ; iは++ ){ 削除[] S [i]は、 } 削除[] Sと、 coutの << てendl; リターン 0 ; }
1スペースを解放するために削除して、リリースはデストラクタを呼び出します;即時放出と自由を
2deleteオペレータは無料で、ライブラリ関数であります