C++の基礎
ChatGPT:
C++の基礎を簡潔にまとめます。
■ 1. 基本構造
cppコピーする編集する#include <iostream> // 標準入出力
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
#include <iostream>: 入出力用int main(): プログラムの開始点std::cout: コンソール出力return 0: 正常終了
■ 2. 変数
cppコピーする編集するint number = 10;
double pi = 3.14;
char letter = 'A';
std::string text = "Hello";
bool flag = true;
■ 3. 条件分岐
cppコピーする編集するif (number > 5) {
std::cout << "Greater than 5" << std::endl;
} else {
std::cout << "5 or less" << std::endl;
}
■ 4. ループ
- for
cppコピーする編集するfor (int i = 0; i < 5; i++) {
std::cout << i << std::endl;
}
- while
cppコピーする編集するint i = 0;
while (i < 5) {
std::cout << i << std::endl;
i++;
}
■ 5. 関数
cppコピーする編集するint add(int a, int b) {
return a + b;
}
int main() {
std::cout << add(3, 4) << std::endl; // 7
return 0;
}
■ 6. クラス
cppコピーする編集するclass Person {
public:
std::string name;
void greet() {
std::cout << "Hello, " << name << std::endl;
}
};
int main() {
Person p;
p.name = "Taro";
p.greet();
return 0;
}
■ 7. ポインタ
cppコピーする編集するint num = 10;
int* ptr = #
std::cout << *ptr << std::endl; // 10
もし「もっと詳しく」「演習問題」など希望があれば教えてください。
あなた:
C++の応用
ChatGPT:
C++の応用的な内容を段階的に紹介します。
■ 1. 参照とポインタの応用
ポインタ
cppコピーする編集するvoid swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
参照
cppコピーする編集するvoid swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
■ 2. クラスのコンストラクタ・デストラクタ
cppコピーする編集するclass Person {
public:
std::string name;
Person(std::string n) : name(n) {
std::cout << name << " created" << std::endl;
}
~Person() {
std::cout << name << " destroyed" << std::endl;
}
};
■ 3. 継承とポリモーフィズム
cppコピーする編集するclass Animal {
public:
virtual void speak() {
std::cout << "Some sound" << std::endl;
}
};
class Dog : public Animal {
public:
void speak() override {
std::cout << "Woof!" << std::endl;
}
};
void makeSound(Animal* a) {
a->speak();
}
■ 4. テンプレート
cppコピーする編集するtemplate <typename T>
T add(T a, T b) {
return a + b;
}
■ 5. 標準ライブラリ(STL)
ベクター
cppコピーする編集する#include <vector>
std::vector<int> numbers = {1, 2, 3, 4};
numbers.push_back(5);
マップ
cppコピーする編集する#include <map>
std::map<std::string, int> ages;
ages["Taro"] = 20;
■ 6. ラムダ式
cppコピーする編集するauto add = [](int a, int b) { return a + b; };
std::cout << add(3, 4) << std::endl;
■ 7. スマートポインタ
cppコピーする編集する#include <memory>
std::unique_ptr<int> p1 = std::make_unique<int>(10);
std::shared_ptr<int> p2 = std::make_shared<int>(20);
これらは実践的なC++開発で頻出するテクニックです。
もっと深い例(デザインパターン、マルチスレッド、ファイルIOなど)も必要なら教えてください。
あなた:
もっと
ChatGPT:
さらに高度なC++の応用技術を紹介します。
実践プログラムやパフォーマンス向上に不可欠な技法です。
■ 8. デザインパターンの例:シングルトン
cppコピーする編集するclass Singleton {
private:
static Singleton* instance;
Singleton() {}
public:
static Singleton* getInstance() {
if (!instance)
instance = new Singleton();
return instance;
}
};
Singleton* Singleton::
