セクション 2. 章 2
single
チャレンジ:コンストラクタと属性
メニューを表示するにはスワイプしてください
コンストラクタの主な用途の一つは、クラスの属性を初期化すること。例えば、デフォルトコンストラクタは初期値の設定に利用可能。例:
main.cpp
1234567891011121314#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }
オブジェクトの name 属性に値を指定しない場合、デフォルトでunderfinedに設定される。このコンストラクタを削除して、どのような変化があるか試すことができる。
コンストラクタによる属性の初期化
関数と同様に、コンストラクタもパラメータを受け取ることができ、オブジェクト生成時に異なる引数を指定可能。引数の数が異なる場合に対応するため、コンストラクタのオーバーロードも利用可能。
main.cpp
123456789101112131415161718class Person { public: Person(std::string _name, std::string _surname, int _age) { name = _name; surname = _surname; age = _age; } std::string name; std::string surname; int age; }; int main() { Person person("Bob", "Song", 23); }
タスク
スワイプしてコーディングを開始
シンプルな地図システムを構築することを想定します。Location クラスを作成し、地図上の地点を名前と座標で表現します。課題は、コンストラクタの実装と、他の地点までの距離を計算するメソッドの実装です。
- コンストラクタの実装(3つのフィールドを初期化):
- コンストラクタは3つのパラメータを受け取ります:名前用の
std::stringと座標用の2つのdouble。 - コンストラクタ内で、名前のパラメータをオブジェクトの
nameフィールドに代入します。 - x座標のパラメータを
xフィールドに代入します。 - y座標のパラメータを
yフィールドに代入します。
- コンストラクタは3つのパラメータを受け取ります:名前用の
distanceToメソッドの実装(他のLocationオブジェクトをパラメータとして受け取る):- 現在のオブジェクトと他のオブジェクトの
xおよびy座標にアクセスします。 x座標の差を計算します:other.x - x。y座標の差を計算します:other.y - y。- 距離を次の式で計算します:
sqrt(dx * dx + dy * dy)。 - 計算した距離を
double型で返します。
- 現在のオブジェクトと他のオブジェクトの
Example
Location("Home", 0.0, 0.0) and Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) and Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) and Location("Library", 2.0, 3.0) -> 5.0
解答
すべて明確でしたか?
フィードバックありがとうございます!
セクション 2. 章 2
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください