ホームページ >バックエンド開発 >PHPの問題 >phpとc++の違いは何ですか

phpとc++の違いは何ですか

藏色散人
藏色散人オリジナル
2021-12-15 09:26:282119ブラウズ

php と c の違いは次のとおりです: 1. PHP はサーバー側で実行されるスクリプト言語であり、C は C 言語の継承です; 2. PHP は C でのオーバーロードをサポートしません; 3. 抽象化についてインターフェイスの使用とは異なります; 4. PHP は弱い型付け言語であるため、PHP のポリモーフィズムは C などのポリモーフィズムほど明白ではありません。

phpとc++の違いは何ですか

#この記事の動作環境: Windows 7 システム、PHP バージョン 7.4、Dell G3 コンピューター。

php と c の違いは何ですか?

違い:

保護されたメンバー変数 (i であると仮定します) ) は Base 型であり、そのサブクラス Derived は Base から直接継承します。同時に、Derived にはメンバー関数 func があり、そのパラメーターは Base 型です。この関数は Base オブジェクトの保護されたメンバーにアクセスできますか? Cでは不可能ですが、PHPでは可能です。

  • オーバーロードについて:

PHP は C でのオーバーロードをサポートしていません。関数を再定義します (パラメーターが同じであっても異なっていても、結果は変わります)重複定義エラー)。 PHP には独自のオーバーロード メソッドがあり、C のオーバーロード メソッドよりも拡張的です。関数をオーバーロードする ( __call() メソッドを使用する) だけでなく、メンバー変数をオーバーロードすることもできます ( __get() および __set() を使用する)。 C では、関数はオーバーロードのみ可能であり、オーバーロードの唯一の方法は、異なるパラメーターの型と異なる関数修飾子 (const) です。

  • abstract とinterface について

PHP にはこれら 2 つの修飾子があります。これは、PHP が通常のクラスの多重継承をサポートしていないためです。そのため、Interface は多重継承の実装に使用されます。 Abstract クラスは C にも存在しますが、実装方法が異なります。C では純粋仮想関数を使用して、このクラスが抽象クラスであり、単独でインスタンス化できないことを示します。 PHP では、この意味を示すために関数修飾子 abstract (さらに、クラスも abstract でマークする必要があります) を使用できるだけでなく、クラスを変更してクラスが抽象クラス。また、C の純粋仮想関数はアクセス タイプに制限されず、アクセス タイプが何であってもパブリックとして扱われますが、PHP の抽象関数はプライベートとして宣言できません。

  • ポリモーフィズム

PHP は弱い型付け言語であるため、そのポリモーフィズムがあらゆる場所に反映され、C ほど明白ではありません。たとえば、PHP では、基本クラスの関数はすべて仮想関数とみなすことができるため、修飾子を追加する必要はありません。基本クラスと同じ名前のサブクラス内の関数は動的に呼び出されますが、それは異なります。 C の場合。基底クラスの関数が仮想修飾子を追加しない場合、サブクラス内の同じ名前の関数は動的には呼び出されず、静的にのみ呼び出すことができます。

  • 演算子のオーバーロード

PHP には存在しませんが、C には存在します。 == 演算子に焦点を当てています。この演算子は、型に独自の == オーバーロード関数 (C など) がない場合でも、PHP の任意の型で使用できます。 PHP でのオブジェクトの比較では、== は 2 つのオブジェクトの属性と値が同じで、型も同じであることを意味します。PHP には === 演算子もあります。これは、それらが同じものを参照することを意味します。オブジェクトは Java によく似ています。

  • 最後のキーワード

このキーワードは PHP に存在し、この関数をオーバーライドできないことを示します (関数を変更するために使用された場合)。または、クラスを継承できません (クラスがクラスで変更された場合)。 C にはそのようなキーワードはなく、その効果をシミュレートすることはできません。

  • オブジェクトの代入とコピー

C でコピーまたは代入を行う方法は大きく 3 つあります。

1 つはポインターの代入、つまり p1 = &obj で、これは PHP や Java の代入操作に相当します;

もう 1 つはメンバーごとの代入で、obj1 = obj2 の場合に発生します。デフォルトでは浅いコピーが実行され、PHP でのクローンの効果は同じです。割り当てコピー操作をオーバーロードすることで、ディープ コピーやその他のカスタマイズされたコピーを実行できます。これは、PHP の __clone() メンバー関数に相当します。

3 番目は、メンバーごとの初期化です。つまり、パラメーターが次の場合に自動的に実行されます。渡されたとき、戻り値が渡されたとき、またはオブジェクトを含むコンテナが初期化されたときコピー コンストラクターを自分で定義することで、その効果を制御できます。

コピー コンストラクターは、オブジェクトの直接コピーではなく、完全に参照によって転送されるため、PHP ではほとんど使用されません。

PHP の紹介:

PHP (PHP: Hypertext Preprocessor) は、「ハイパーテキスト プリプロセッサ」であり、サーバー側で実行されるスクリプト言語です。特に Web に適しています。開発可能であり、HTML に埋め込むことができます。 PHP構文はC言語を学習し、JavaやPerlという複数の言語の特徴を吸収して独自の構文を開発し、Javaのオブジェクト指向プログラミングなど、それぞれの強みをもとに改良を続けてきたのが主な目的です。この言語は元々、開発者が高品質の Web サイトを迅速に作成できるようにするために作成されました。 [1-2] PHP はオブジェクト指向開発とプロセス指向開発の両方をサポートしており、非常に柔軟に使用できます。

C はじめに:

C は C 言語の継承であり、C 言語の手続き型プログラミング、抽象データ型を特徴とするオブジェクトベース プログラミング、継承とポリモーフィズムを特徴とする指向プログラミングを実行できます。 C はオブジェクト指向プログラミングが得意ですが、プロセスベースのプログラミングも実行できるため、対応できる問題の規模が大きいか小さいかが異なります。

C は、効率的なコンピュータ操作の実用的な機能を備えているだけでなく、大規模プログラムのプログラミング品質とプログラミング言語の問題記述能力の向上にも取り組んでいます。

推奨学習: 「PHP ビデオ チュートリアル

以上がphpとc++の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。