Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:コンストラクタと属性 | Constructors and Destructors
C++オブジェクト指向プログラミング
セクション 2.  2
single

single

bookチャレンジ:コンストラクタと属性

メニューを表示するにはスワイプしてください

コンストラクタの主な用途の一つは、クラスの属性を初期化すること。例えば、デフォルトコンストラクタは初期値の設定に利用可能。例:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }

オブジェクトの name 属性に値を指定しない場合、デフォルトでunderfinedに設定される。このコンストラクタを削除して、どのような変化があるか試すことができる。

コンストラクタによる属性の初期化

関数と同様に、コンストラクタもパラメータを受け取ることができ、オブジェクト生成時に異なる引数を指定可能。引数の数が異なる場合に対応するため、コンストラクタのオーバーロードも利用可能。

main.cpp

main.cpp

copy
123456789101112131415161718
class 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 クラスを作成し、地図上の地点を名前と座標で表現します。課題は、コンストラクタの実装と、他の地点までの距離を計算するメソッドの実装です。

  1. コンストラクタの実装(3つのフィールドを初期化):
    • コンストラクタは3つのパラメータを受け取ります:名前用の std::string と座標用の2つの double
    • コンストラクタ内で、名前のパラメータをオブジェクトの name フィールドに代入します。
    • x座標のパラメータを x フィールドに代入します。
    • y座標のパラメータを y フィールドに代入します。
  2. 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

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  2
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt