Menu
Coddy logo textTech

クラスとオブジェクト

CoddyのC++ジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 6/104。

クラスは構造を定義する設計図です。オブジェクトはその設計図から作成された特定のインスタンスです。

クラス(設計図)

class Car {
public:
    std::string brand;
    int year;
    
    std::string getInfo() {
        return brand + " (" + std::to_string(year) + ")";
    }
};

複数のオブジェクト(インスタンス)の作成

Car car1;
car1.brand = "Tesla";
car1.year = 2023;

Car car2;
car2.brand = "Honda";
car2.year = 2020;

std::cout << car1.getInfo() << std::endl;  // Tesla (2023)
std::cout << car2.getInfo() << std::endl;  // Honda (2020)

各オブジェクトは独立しています。car1 を変更しても car2 には影響しません。同じクラスから複数のオブジェクトを作成でき、それぞれが独自のデータを保持します。

challenge icon

チャレンジ

中級

Car クラス(設計図)を作成してください。プログラムはこのクラスから2つの個別のオブジェクト(インスタンス)を作成し、それぞれが独自のデータを保持します。

  • パブリックメンバ: brand (string), year (int)
  • getInfo()"<brand> (<year>)" を返します

チートシート

クラスは構造を定義する設計図です。オブジェクトは、その設計図から作成された特定のインスタンスです。

クラスの定義:

class Car {
public:
    std::string brand;
    int year;
    
    std::string getInfo() {
        return brand + " (" + std::to_string(year) + ")";
    }
};

クラスからオブジェクトを作成する:

Car car1;
car1.brand = "Tesla";
car1.year = 2023;

Car car2;
car2.brand = "Honda";
car2.year = 2020;

std::cout << car1.getInfo() << std::endl;  // Tesla (2023)
std::cout << car2.getInfo() << std::endl;  // Honda (2020)

各オブジェクトは独立しており、独自のデータを保持します。1つのオブジェクトを変更しても、別のオブジェクトには影響しません。

自分で試してみよう

#include <iostream>
#include "Car.h"

int main() {
    std::string brand1, brand2;
    int year1, year2;
    
    std::getline(std::cin, brand1);
    std::cin >> year1;
    std::cin.ignore();
    std::getline(std::cin, brand2);
    std::cin >> year2;
    
    Car car1;
    car1.brand = brand1;
    car1.year = year1;
    
    Car car2;
    car2.brand = brand2;
    car2.year = year2;
    
    std::cout << "Car 1: " << car1.getInfo() << std::endl;
    std::cout << "Car 2: " << car2.getInfo() << std::endl;
    return 0;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン