C++樹林– category –
-
C++樹林
C++の隠し味?コンパイラ固有の属性 __declspec と __attribute__ を解説
C++プログラミングにおいて、時にはコンパイラに対して標準機能の範囲を超える、より詳細な指示を与えたい場面があります。例えば、「この関数はDLLからエクスポートする」「この構造体は特定のメモリ境界に配置してほしい」といったケースです。 この記事... -
C++樹林
C++の基底クラスにアクセス!謎のキーワード__superとは?
C++のクラス継承において、派生クラスから基底クラスのメンバ関数を呼び出すのは日常的な操作です。通常はBase::func()のように基底クラス名を明示しますが、Microsoft社のVisual C++コンパイラには、__superという特別なキーワードが用意されています。 ... -
C++樹林
C++の型名を読みやすく!typeidの結果をデマングルする方法
C++でデバッグやログ出力を行う際、typeid(some_variable).name() を使って変数の型名を取得することがあります。しかし、特にテンプレートや名前空間を使った複雑な型の場合、出力された文字列が N2NS5InnerIiE のような暗号めいたものになり、困惑した経... -
C++樹林
たった1行でC++を高速化!OpenMPによるforループ並列化入門
「この重たいループ処理、もっと速くならないだろうか…」 C++での開発において、計算量の多いforループの実行速度は常に課題となります。近年のCPUは複数のコアを持つ「マルチコア」が当たり前。この有り余るパワー、活かさないのはもったいないですよね。... -
C++樹林
C++の性能を限界まで引き出す!SIMD組み込み関数入門
C++で最高のパフォーマンスを追求する際、コンパイラの最適化だけでは到達できない領域があります。そのような場面で強力な武器となるのが、CPUの機能を直接叩く**「組み込み関数(Intrinsic Functions)」**です。 この記事では、組み込み関数とは何か、... -
C++樹林
【C++開発者向け】CUDAとThrustライブラリで始めるGPU高速化入門
C++で大規模なデータを扱う際、その計算速度がボトルネックになっていませんか? 本記事では、その解決策となり得るGPGPU技術について、特にC++開発者が取り組みやすいNVIDIAのCUDAとThrustライブラリに焦点を当て、その基本から実践的なサンプルコードま... -
C++樹林
【C++】typeid の使い方 | 実行時のオブジェクトの型を判別する方法 (RTTI)
はじめに C++の継承とポリモーフィズム(多態性)を使うと、親クラスへのポインタの配列に、様々な種類の子クラスオブジェクトをまとめて格納できます。しかし、時には「このポインタが今指しているのは、『戦士』オブジェクトなのか、それとも『魔法使い... -
C++樹林
【C++】抽象クラスと純粋仮想関数とは?継承先に実装を強制する方法
はじめに C++の継承において、親クラス(基底クラス)の段階では具体的な処理内容は決められないが、「このクラスを継承する子クラス(派生クラス)は、必ずこの機能(メンバ関数)を実装しなければならない」というルールを設けたい場合があります。 例え... -
C++樹林
【C++】仮想関数 (virtual) とは?ポリモーフィズム(多態性)を実現する方法
はじめに C++の継承では、親クラス(基底クラス)へのポインタを使って、子クラス(派生クラス)のオブジェクトを指し示すことができます。しかし、ここで一つ問題があります。 親クラスのポインタ->関数() のように呼び出した場合、通常は**ポインタの... -
C++樹林
【C++】基本クラスへのポインタで、派生クラスのオブジェクトを指す方法
はじめに C++の継承において、「is-a 関係」という重要な概念があります。これは、「車は乗り物の一種である」というように、子クラスが親クラスの一種である、という関係性を示すものです。 この is-a 関係があるため、C++では、親クラスを指すポインタを... -
C++樹林
【C++】子クラスで親クラスのメンバ関数をオーバーライドする方法
はじめに C++の継承では、子クラス(派生クラス)は親クラス(基底クラス)のメンバ関数を引き継ぎます。しかし、時には「親クラスの機能を、子クラス独自の処理に**上書き(変更)**したい」という場面があります。 このように、親クラスから継承したメン... -
C++樹林
【C++】継承におけるメンバへのアクセスルール (public, protected, private)
はじめに C++の継承では、子クラスは親クラスのメンバを引き継ぎますが、全てのメンバに自由にアクセスできるわけではありません。親クラスのメンバが public, protected, private のどれで宣言されているかによって、子クラスの内部から、またクラスの外... -
C++樹林
【C++】継承で、子クラスから親クラスの引数付きコンストラクタを呼び出す方法
はじめに C++の継承において、子クラスのオブジェクトが生成される際には、必ず親クラスのコンストラクタが先に呼び出されます。もし親クラスに引数なしのデフォルトコンストラクタしか存在しない場合は、コンパイラが自動でそれを呼び出してくれます。 し... -
C++樹林
【C++】クラスの継承入門 | 既存のクラスを再利用して新しいクラスを作る方法
はじめに オブジェクト指向プログラミングの三本柱の一つである「継承 (Inheritance)」は、既にあるクラスの機能(メンバ変数やメンバ関数)を受け継いで、新しいクラスを定義するための強力な仕組みです。 例えば、「乗り物」という基本的なクラスがあれ... -
C++樹林
Python変数の参照とコピー:copyモジュールで予期せぬ変更を防ぐ
参照とは? Pythonでは、変数はデータそのものを直接格納しているわけではなく、メモリ上のデータが保存されている場所を指し示す「参照(リファレンス)」として機能します。 この仕組みは、データ型が**イミュータブル(変更不可能)**か、**ミュータブ... -
C++樹林
Pythonのタプル入門:リストとの違いと使い分け
Pythonには、複数の値をまとめて扱うためのデータ型がいくつかありますが、タプルはリストと非常によく似た役割を持つデータ型です。しかし、リストとは異なる重要な特徴があり、それぞれのデータ型には適した使い分けが存在します。 この記事では、タプル... -
C++樹林
Pythonの文字列とリスト:似ている点と決定的な違い
Pythonを学習していると、文字列とリストがいくつかの点で非常に似ていることに気づきます。どちらも複数の要素が順番に並んだシーケンスという共通点を持っており、同じような操作が可能です。 しかし、この二つにはプログラムの挙動を左右する決定的な違... -
C++樹林
Pythonリストの並び替え:sort()メソッドの基本と応用
Pythonのリストに格納された要素を、特定の順番(昇順や降順)に並べ替えたい場面は頻繁に発生します。そんなときに役立つのが、リストが持つ**sort()メソッド**です。 sort()メソッドは、リストの要素を自動で並べ替え、リスト自体を直接変更します。この... -
C++樹林
Pythonリストの基本メソッド:index, append, insert, removeの使い方
Pythonのリストは、単にデータを格納するだけでなく、そのデータを操作するための便利なメソッドを数多く持っています。メソッドとは、特定のデータ型(この場合はリスト)に属している、特別な関数のことです。 この記事では、リスト操作で特によく使われ... -
C++樹林
Pythonのコードを短くする累算代入演算子(+=など)の使い方
Pythonでプログラミングをしていると、ある変数の現在の値を使って計算し、その結果を同じ変数に再代入する、という操作は非常に頻繁に発生します。 score = 100 score = score + 5 # scoreに5を加える このようなコードを、より短く、より直感的に書くた... -
C++樹林
Pythonリストの便利なテクニック:in演算子と複数代入
Pythonでリストを扱う際、コードをより効率的で読みやすくするための便利なテクニックがいくつか存在します。この記事では、その中でも特に役立つ**in / not in演算子と複数代入**という2つの機能について解説します。 inとnot in演算子でリストの要素を調... -
C++樹林
【C++】静的メンバとは?クラス全体で共有する変数・関数 (static) の使い方
はじめに C++のクラスでは、通常、メンバ変数(データメンバ)はオブジェクトごとに個別の値を持ちます。Carクラスから car1 と car2 という2つのオブジェクトを作れば、それぞれの gas(ガソリン量)は別々に管理されます。 しかし、「このクラスから、合... -
C++樹林
【C++】コンストラクタの応用 | オブジェクトの配列の初期化とデフォルト引数
はじめに C++のコンストラクタは、オブジェクトの初期化を自動化する強力な機能ですが、その応用テクニックを学ぶことで、さらにコードを簡潔で柔軟にすることができます。 この記事では、コンストラクタの応用として、以下の2つの重要なテクニックを解説... -
C++樹林
【C++】コンストラクタのオーバーロード入門 | オブジェクトの作り方を複数用意する方法
はじめに C++のコンストラクタは、オブジェクトが生成される際に自動で呼び出され、メンバ変数の初期化を行います。通常の関数と同様に、この**コンストラクタもオーバーロード(overload)**することが可能です。 コンストラクタをオーバーロードすること... -
C++樹林
【C++】コンストラクタとは?オブジェクトの初期化を自動化する方法
はじめに C++のクラスからオブジェクトを作成する際、メンバ変数を一つずつ手動で設定するのは手間がかかり、また設定し忘れると、変数が不定な値(ごみデータ)のまま使われてしまう危険性があります。 このような初期化の手間とミスを防ぐために、C++に... -
C++樹林
【C++】関数にオブジェクトを渡す3つの方法(値渡し、ポインタ渡し、参照渡し)
はじめに C++で、ある関数の中でクラスのオブジェクトを利用したい場合、どのようにしてそのオブジェクトを関数に渡せばよいでしょうか? C++には、主に3つの方法があり、それぞれにメリットとデメリットが存在します。 値渡し (Pass by Value): オブジェ... -
C++樹林
【C++】インライン関数とは?クラス定義内でメンバ関数を実装する方法
はじめに C++のクラスでは、メンバ関数の「宣言(プロトタイプ)」をクラス定義内で行い、「実装(処理内容)」をクラスの外部で行うのが一般的です。しかし、処理が非常に短い関数の場合、宣言と実装を分けて書くのが少し冗長に感じられることがあります... -
C++樹林
【C++】private と public の違い | メンバへのアクセスを制限しデータを守る方法
はじめに C++のクラスで、全てのメンバを public(公開)にしてしまうと、クラスの外部から myCar.gas = -10.0; のように、意図しない不正な値を直接代入できてしまいます。これでは、オブジェクトの状態が簡単におかしくなり、バグの原因となります。 こ... -
C++樹林
【C++】クラスの基本的な使い方まとめ(定義→オブジェクト作成→メンバアクセス)
はじめに C++のクラスは、オブジェクト指向プログラミングの基本となる「設計図」です。この設計図を実際にプログラムで活用するには、決まった手順を踏む必要があります。 この記事では、C++のクラスを利用するための基本的な流れを、以下の3つのステップ... -
C++樹林
【C++】クラス(class)とは?オブジェクト指向の基本を初心者向けに解説
はじめに オブジェクト指向プログラミング(OOP)の中心的な概念が「クラス (class)」です。クラスは、現実世界の「モノ」が持つ**状態(データ)と振る舞い(機能)**を、プログラムの中で一つのまとまりとして表現するための「設計図」と考えることがで...