免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
オブジェクト指向プログラミングの基本的な特徴
- 要約:特定の問題(オブジェクト)は、プロセスのうちの、オブジェクトのクラスの公共性をまとめていると説明します。
- パッケージ:抽象的および行動得られたデータ(または機能)は、有機全体を形成して、有機的に「クラス」を形成するために結合コードデータ及び操作データの関数です。
- 継承:元のクラス、より具体的には、より詳細な説明の特徴を可能にします。
- 多型は:オブジェクトのタイプの複数を処理することができるプログラムの能力を指します。この多型は、多型形態の4種類を含む、タイプの強制的な、重い多型、多型のパラメータによってC ++多型であってもよいです。
- 違いが書かれていないときに、公開の範囲は、プライベート、保護された、と
回答:書き込みませ時にデフォルトはデフォルトです
- インラインメンバ関数は、
暗黙的に宣言します:
class Clock {
public:
void show(){xxxxxxxxx}
private:
int hour,minute;
};
DISPLAY文:
class Clock {
public:
void show();
private:
int hour,minute;
};
inline void Clock::show(){
xxxxxxxxx;
}
コンストラクタ
-
同じ関数名とコンストラクタのクラス名、戻り値のない、一般的に宣言されているパブリック
-
オブジェクトが作成されると、コンストラクタが自動的に呼び出される
コピーコンストラクタを -
そのパラメータは、このクラスの参照オブジェクトです。その役割は、すでに同じ種類の新しいオブジェクトを初期化するために存在するオブジェクトを使用することです。
class Point{
public:
Point(int xx=0,int yy=0){//构造函数
x=xx;
y=yy;
}
Point(Point &p);//复制构造函数
int getx(){return x};
int gety(){return y};
private:
int x,y;
};
Point::Point(Point &p)
{
x=p.x;
y=p.y;
}
オブジェクトが作成されたときに、コンストラクタが呼び出され、コピーコンストラクタは、次の3つの場合に呼ばれています
- 別のオブジェクトクラスを持つオブジェクトは、クラスを初期化するとき
int main()
{
Point a(1,2);
Point b(a);//初始化b.c时复制构造函数被调用
Point c=a;
}
- オブジェクトは、関数のクラス・パラメータである場合は、関数が呼び出され、パラメータの引数が結合されます。
void f(Point p)
{xxx;}
int main()
{
Point a(1,2);
f(a);//函数的形参为类的对象,调用函数时,复制构造函数被调用
return 0;
}
- 関数の戻り値は、オブジェクトのクラスである場合は、実行が完了すると、関数は呼び出し元に戻ります
Point g()
{
Point a(1,2);
return a; //返回值是对象,调用复制构造函数
}
デストラクタ
- オブジェクトが削除される前に、いくつかのクリーンアップ作業を行うために、
- デストラクタは終わりに近づいてのオブジェクトの生存期間の時に自動的に呼び出されます。
- 引数をデストラクタません
オブジェクトのコンストラクタの呼び出しを組み込み、それが埋め込まれたオブジェクトのクラスの組み合わせに応じて定義された順序で表示される順序を呼び出します。注文が埋め込まれたオブジェクトが埋め込まれたオブジェクトのコンストラクタで、コンストラクタの初期化子リストに表示されます呼び出しは何の関係もないことに注意してください
前方参照ステートメント
class Fred;//前向引用声明
class Bar
{
Fred x;//错误,类Fred的定义尚不完整
};
class Fred
{
Bar y;
};
UMLグラフィックロゴは、モデリング言語統一
参考にこのブログを:https://blog.csdn.net/qq_27175513/article/details/79744694
構造
- 構造との唯一の違いは、そのクラスで、クラス構造が異なるデフォルトのアクセス制御属性を持っている:クラスでは、私有財産であるアクセス属性制御部材、および公共のための構造のために指定されていません。
- 公共のすべてのメンバーの構造場合は、それを割り当てることができる。この方法には、ユーザー定義のコンストラクタ、無用基底クラスの仮想関数と、ありません。
struct Student {}; int main() { Student stu={97001,"lll",'F',19}; }
連邦
- 公共のデフォルトのアクセス制御プロパティ
- すべてのデータコンソーシアムのメンバーには、メモリセルの同じセットを共有します
- 変数の連邦のメンバーは、最ものみ意味がありますが
- オブジェクトのメンバーは、カスタムコンソーシアムのコンストラクタ、デストラクタとコピー代入演算子のオーバーロードを持つことができません
- コモンウェルスは継承できませんので、サポート多型が含まれていません。
union Mark
{
char grade;//等级制的成绩
bool pass; //只记是否通过的成绩
int percent;// 百分制成绩
};