2.3コピーコンストラクタ
2.3.1機能
前のオブジェクトのデータを新しいオブジェクトに割り当てます
コピー関数(仮パラメーター)は、このクラスのオブジェクトへの参照&
2.3.1いつ使用されますか?
2.4浅いコピーと深いコピー
sの内容を変更すると、それに応じてscopyも変更されます。コピー済みとコピーなしの違いは何ですか?。
理由:2つのポインターが同じ場所を参照しているため、メモリ領域は変更されていません(s = sObj.s;)
2つは異なる場所を参照します。sとnew charは新しい場所を持ち、sの変更によって変更されません。
例1:デザインサークル
#include <iostream> using namespace std; const float PI = 3.1416 ; クラスCCircle { float x、y; 未署名の長いclr; float r; public : CCircle(float _x = 0、float _y = 0、float _r = 0、unsigned long _clr = 0x00FF00 ):x(_x)、y(_y)、clr(_clr)、r(_r) { // 构造関数数、鵺认初始化、 } doubleGetArea() { PI * r * rを返す; } double GetPerimeter() { return 2 * PI * r; } void Move(float dx、float dy) { x + = dx; y + = dy; } void Scale(float s) { r = s * r; } void Draw() { cout << " Circle:" << x <<" 、" << y << " 、" << r << endl; } }; int main() { CCircle myCircle(300.0f、400.0f、1.5f、0xFF0000 ); myCircle.Move(3.0f、4.0f ); myCircle.Scale(2.0f ); myCircle.Draw(); cout << myCircle.GetPerimeter()<< " 、" << myCircle.GetArea()<< endl; 0を返し ます。 }
書式#include <iostreamの> の#include <graph2d.h> // 教師が書いた、強力なああです、私自身、いくつかは使用しません 使用して 名前空間はstdを、 使用して 名前空間グラフ; //は、このようなemmm。。 クラスCCircle { float x、y; unsigned long clr; float r; public : CCircle(float _x = 0、float _y = 0、float _r = 0、unsigned long _clr = 0x00FF00 ):x(_x)、y(_y) 、clr(_clr)、r(_r) { } double GetArea() { PI * r * rを返す; } double GetPerimeter() { return 2 * PI * r; } void Move(float dx、float dy) { x + = dx; y + = dy; } void Scale(float s) { r = s * r; } void Draw() { setColor(clr); fillCircle(x、y、r); } }; CCircle myCircle( 300、400、50.5f、0xFF00FF)。 // 布吉岛啥意思 void display() { myCircle.Draw(); } ボイドキーボード(符号なし文字のキー) { スイッチ(キー) { ケース ' W ' : myCircle.Move(0、5 )。 休憩; ケース ' s ' : myCircle.Move(0、-5 ); 休憩; ケース ' ' : myCircle.Move( - 5、0 ); 休憩; ケース' D ' : myCircle.Move(5、0 ); 休憩; ケース' z ' : myCircle.Scale(1.05 ); 休憩; ケース' x ' : myCircle.Scale(0.95 ); 休憩; } } int main() { myCircle.Move(3.0f、4.0f ); myCircle.Scale(2.0f ); cout << myCircle.GetPerimeter()<< " 、" << myCircle.GetArea()<< endl; initGraph(ディスプレイ、キーボード); 0を返し ます。 }
## 1.構造と機能
##次に、座標系と関数の命名
関数の命名は、ラクダスタイルの命名法を採用しています。つまり、関数名が1つ以上の単語で接続されている場合、最初の単語は小文字で始まり
、次の単語の最初の文字は大文字になります。これは、上記のディスプレイ座標系のshowCoordinate関数に示されています。
座標系は正常で、原点は左下隅にあります
Escを押してインターフェースを終了し、F1を押してヘルプ情報を表示し、F2を押して座標系を表示し、「q」を押してウィンドウと全画面を
切り替えます
## 3.操作メカニズム
コールバック関数:
関数1のポインターはパラメーターとして関数2に渡され、関数1は関数2の操作によって制御されます。
ユーザーが直接呼び出すのではなく、特定のイベントまたは条件が発生すると(キーボードの押下、マウスのクリックなど)、
オペレーティングシステムがメッセージを呼び出し、関数にメッセージを送信して、イベントまたは条件に応答します。