『アルゴリズムノート』の基礎C/C++進級

3700 ワード

今回は主にC++がCと異なる場所:クラスについて話します.
1.クラスの定義
クラスを定義します.本質的にはデータ型を定義する青写真です.これは実際にはデータを定義していませんが、クラスの名前が何を意味するか、つまりクラスのオブジェクトに何が含まれているか、このオブジェクト上でどのような操作を実行できるかを定義します.クラス定義は、キーワードclassで始まり、後にクラスの名前が付きます.クラスのボディは、カッコのペアに含まれます.クラス定義後、セミコロンまたは宣言リストに従う必要があります.
class Box
{
   public:
      double length;   //      
      double breadth;  //      
      double height;   //      
};

アクセス方法
Box Box1;          //    Box1,    Box
Box Box2;          //    Box2,    Box

このときBox 1とBox 2はいずれもBoxタイプのデータ構造であり,intタイプ,doubleタイプに相当するが,Boxタイプは我々自身が定義したタイプである.
int、double、charこれらのタイプは言語そのものの一部に属し、私たちは基本的なタイプと呼ばれています.基本的なタイプは変更されてはいけません.創造されてはいけません.消滅されてはいけません.どのプログラムも基本的なタイプで構築されています.例えば、私たちは学生を1つのタイプで表現したいと思っています.では、私たちはchar*を使って、彼の名前を表すことができます.unsigned intで彼の学号を表し、doubleで彼の成績を表すなど、学生情報を表すタイプは私たちがカスタマイズしたものなので、カスタムタイプ、つまり上記のBoxタイプと呼ばれています.
2.CとC++のカスタムタイプ
Cのカスタムタイプ:構造体
typedef struct UserType{
        int a;
        double b;
        long long c;
}* __LPUSERTYPE;

C++のクラス:
class Point{
public:
        double x;
        double y;
};

この両者の間にはどのような違いがあるのか、C++はクラス付きのC言語と考えられるので、classは多くの場合structに等しいように感じ、理解しやすいはずです.
class:C++キーワードで、次にタイプを定義することを示します.
Point:タイプ名、いつもclassの後ろについて、タイプ名が何であるかを指定します.classとタイプ名の中間には、comを書くときに使用するuuidなど、他のものがあります.例えば、クラスをエクスポートするときに使用する_declspec(dllexport)など.
{}:classのコードセグメント.
C++の中で、classは1つの完全なC++文で、C++文はすべて";"终わりますので、「}」の后ろに终わりを表す「;」を使う必要があります.もちろん、この文法はC言語のstructにも同様に実用的です.ではclassとstructにはどんな違いがありますか?C言語の中で、structの中で定義したデータのタイプはすべて直接アクセスすることができて、簡単にC言語のstructのデータが共有していることを言って、同時にC言語のstructの中でメンバーの関数があってはいけなくて、もちろんこの制限はC++の中ですでに捨てられて、C++の中で、structとclassの唯一の違いはデフォルトの権限の違いで、C言語の中で権限の概念がなくて、しかし、C++はオブジェクト向けのプログラミング言語であるため、データのカプセル化を容易にするための権限の概念が自然に提供されているが、structのデフォルト権限はpublicであり、classのデフォルト権限はprivateであり、publicはその名の通り共通であり、privateはプライベートであり、もちろんpublicとprivateのほかにもprotectedという権限がある.privateとprotectedが制限しているデータは外部からアクセスできないので、彼らの違いは何ですか?privateは純粋にデータをカプセル化し、protectedはデータをカプセル化するだけでなく、継承にもバックドアを残します.ご覧のように、ここで使用するplusic権限は、publicの後ろに「:」番号が付いていなければならないので、publicの下のインタフェースやデータは外部から直接アクセスできます.では、C++では、structをいつ使用し、classをいつ使用しますか?ここでは標準仕様が制限されていないので、簡単に言えばstructを使用する場所ではclassを使用して置き換えることができますが、逆も同様ですが、通常C++には単純に組み合わせタイプを定義するだけではstructを使用します.そうしないとclassを使用する必要があります.
  
構造関数,賦値,operate再構成関数などもあり,ここでは説明せず,主に基本知識を理解するためにデータ構造とアルゴリズムの学習を行う.
がんばって!