GCC拡張属性:constructorとunusedの活用法

GCCの属性機能は、変数や関数に対して特別な振る舞いを付与する強力な機能です。属性の適用場所には決まりがあり、変数の場合は変数名の直後に記述し、関数の場合は宣言部分に記述します(定義部分ではありません)。ただし、constructorやunusedなどの一部属性は例外として扱われます。 プログラム開始前の自動実行:constructor属性 C言語において、main関数よりも前に ...

7月16日 16:28 投稿

Dartにおけるクラスとオブジェクト指向の詳細な解説

インスタンスとメンバーの操作 var point = Point(2, 2); point.y = 3; assert(point.y == 3); double dist = point.distanceTo(const Point(4, 4)); point?.y = 4; オブジェクト生成と定数化 var p1 = Point(2, 2); var p2 = Point.fromJson({'x': 1, 'y': 2}); var constantPoint = const ImmutablePoint(2, 2); var sameConst = const ImmutablePoint(2, 2); assert(i ...

6月30日 22:37 投稿

C++におけるクラスとオブジェクトの基本

クラスとオブジェクト オブジェクト指向プログラミングの核心概念 オブジェクト指向プログラミング(OOP)は、現実世界のエンティティを「オブジェクト」としてモデル化し、それらを共通の特徴に基づいて「クラス」に抽象化する手法です。その4大原則は以下の通りです: 抽象化:本質的な特徴のみを抽出し、不要な詳細を隠蔽 カプセル化:データと操作を1つの単位に ...

6月14日 18:05 投稿

C++ コンストラクタの役割とデフォルト初期化の仕組み

問題の背景 C++ でクラスを設計する際、データメンバーに値を設定するために専用の初期化関数を用意する方法が一般的ですが、以下のような実装を考えてみましょう。 class Product { public: void setup(int id, int stock, float price) { _id = id; _stock = stock; _price = price; } void showDetails() { std:: ...

6月7日 21:30 投稿