文法の基礎(一)c++学習ノート

2610 ワード

1.構造関数:1)作用:構造関数に対して、クラスのオブジェクトをクリアし、メモリを解放する2)形式:~クラス名()で、戻り値とパラメータがない2.クラスでメンバー変数を定義する場合は、初期値を直接割り当てることはできません.3.クラスまたは構造体の末尾に「;」を付ける番号4.C言語では関数名の再ロードは許されない.c++で5.注意親クラスと子クラスの両方にコンストラクション関数とコンストラクション関数がある場合の呼び出し順序6.子クラスが親を継承し、親メソッドを呼び出す書き方に注意してください.


class Animal
{
public:
	Animal(int height, int weight)
	{
		cout<<"animal contruct"<<endl;
	}
};
class Fish:public Animal
{
public:
	Fish():Animal(400, 300)
	{
		cout<<"fish contruct"<<endl;
	}
};

7.クラス内の定数メンバーの初期化方法

class Point
{
public:
	Point():x(0),y(0)
private:
	const int x, y;
};

8.多重継承の弊害:サブクラスaは親クラスAとBを継承し、AクラスとBクラスには同名のメソッドfuncation()があり、このときaクラスインスタンスはfuncation()メソッドを呼び出し、コンパイル時にエラーを報告する.9.矢印オペレータ(->およびポイントオペレータ(.)の違い:pがポインタの場合、p->function()pがオブジェクトである場合、p.function()10.虚関数と多態性

class Animal
{
public:
	void breathe()
	{
		cout<<"animal breathe"<<endl;
	}
};
class Fish:public Animal
{
public:
	void breathe()
	{
		cout<<"fish breathe"<<endl;
	}
};
void fn(Animal *pAn)
{
	pAn->breathe();
}
void main()
{
	Animal *pAn;
	Fish fash;
	pAn = &fash;
	fn(pAn);  //      “animal breathe”
}
1)Animalクラスのbreathe()メソッドの前にvirtualキーワードを追加すると、印刷結果は「fish breathe」となります.2)virtualキーワードで明示された関数を虚関数と呼ぶ.3)c++の多態性:親クラスの関数の前にvirtualキーワードを付け、子クラスで関数を書き換えると、実行時にオブジェクトの実際のタイプに応じて対応する関数が呼び出されます.すなわち、オブジェクトタイプがサブクラスである場合、サブクラスの関数が呼び出される.オブジェクトタイプが親である場合、親の関数が呼び出されます.4)c++の多態性は,遅すぎるバインド技術で実現される.11.純虚関数1)は、具体的に実装されていないと示される虚メンバー関数(javaにおける抽象的な方法と同様の役割を果たす)を指す.
class Animal
{
public:
	virtual void breathe() = 0;
};
2)虚関数を含むクラスを抽象クラスと呼ぶ.抽象クラスはオブジェクトをインスタンス化できません.3)抽象クラスのサブクラスは純虚関数を実現しなければならない.そうでなければ抽象クラスであり,オブジェクトをインスタンス化することはできない.4)純虚関数には関数体があってもよいが,この用法は珍しい.12.関数の非表示1)場合1:サブクラスの関数は親の関数と全く同じ(関数名とパラメータリストは同じ)であり、親の関数はvirtualキーワードを使用していないため、親の関数は非表示になります.2)ケース2:子クラスの関数と親クラスの関数は同じ名前ですが、パラメータリストが異なり、親クラスの関数にvirtualキーが付けられているかどうかにかかわらず、親クラスの関数は非表示になります.13.クラス外定義メンバー関数1)クラスの内部でメンバー関数を宣言し、クラス外でメンバー関数を定義することは、c++プログラム設計の良い習慣である.

class Student
{
public:
	void display(); //          
}
void Student::display()
{
	...
}
2)「::」、関数がどのクラスに属するかを宣言する役割ドメイン限定子.