C++ オブジェクト指向プログラミング:カプセル化・深いコピー・動的メモリ管理の実践
課題1:コンポジションによるGUIコンポーネントの設計
ボタンとウィンドウの関係をコンポジション(has-a関係)で表現します。WindowクラスがWidgetクラスを含む形で実装します。
Widget.hpp
#pragma once
#include <iostream>
#include <string>
class Widget {
public:
explicit Widget(const std::string &name);
const std::string& na ...
8月8日 14:29 投稿
C++ Qtでの一時ファイルの処理方法
C++ Qtで一時ファイルを扱う方法について、手動管理やRAIIなどの手法を紹介します。
1. 手動管理
最も基本的な方法として、手動で一時ファイルを作成し、使用後は手動で削除します。コードが単純な場合はこれで十分ですが、複雑なロジックや分岐がある場合、一時ファイルの削除を忘れる可能性があります。
#include <QFile>
#include <QDir>
void example1() ...
8月6日 07:35 投稿
C++におけるスマートポインタの設計と使用法
RAIIによるリソース管理
RAII(Resource Acquisition Is Initialization)は、オブジェクトの生存期間にリソースの確保と解放をバインドする設計パターンです。メモリ、ファイルハンドル、スレッドなどのリソースは、コンストラクタで確保され、デストラクタで自動的に解放されます。これにより、例外や早期returnがあってもリソース漏れを防ぎます。
スマートポインタと ...
7月26日 23:47 投稿
C++における例外処理の基本とベストプラクティス
例外処理の概要
例外処理は、C++プログラミングにおける重要なエラーハンドリングメカニズムです。戻り値をチェックする従来の方法に比べ、例外はエラーを自動的に伝播させ、メインロジックからエラーハンドリングコードを分離し、複数の関数にまたがる制御フローを処理できます。これにより、各関数で戻り値を繰り返しチェックし、エラーステータスを渡す必要がなくなりま ...
7月18日 01:06 投稿
C++ で MySQL に安全に接続する実践ガイド:Connector/C++ の最新活用法
MySQL Connector/C++ を用いた C++ アプリケーションからのデータベース接続は、パフォーマンスと信頼性を両立させるための鍵となる技術です。本稿では、Visual Studio 2019(および互換環境)を前提に、公式ドライバの現代的な使い方を再構成し、セキュアな接続管理、リソース自動解放、エラーハンドリングの強化、およびマルチスレッド対応を実現する手法を解説します。
...
7月3日 22:40 投稿
C++ における std::shared_ptr を活用したメモリ寿命の自動制御
C++ 開発において、動的確保されたメモリの解放忘れは重大なバグとなり得ます。従来の生ポインタでは明示的な delete 操作が必要ですが、std::shared_ptr を利用することで参照カウントベースの自動管理が可能になります。
ここでは、試験紙のライフサイクル(作成、回答、採点、破棄)を例に、生ポインタとスマートポインタの実装差異を比較します。
生ポインタによる実装 ...
6月22日 20:02 投稿
固定長・可変長配列を実装するC++シーケンシャルコンテナ
固定長シーケンシャルコンテナ FixedArrayList
コンパイル時に要素数が確定する、スタック領域を利用したシンプルなリストである。全要素が連続したメモリブロックに格納され、ランダムアクセスがO(1)で行える。
// FixedArrayList.hpp
#pragma once
#include "LinearList.hpp"
namespace ds {
template<typename T, std::size_t N>
class FixedArrayList : publi ...
6月18日 18:00 投稿
C++ オブジェクト指向設計の実践:リソース管理とインターフェース設計の詳細
以下はC++を用いたオブジェクト指向設計とリソース管理の実装例についての詳細です。各タスクでは、クラス設計、メモリ管理、カプセル化の実践を通じて、効率的で安全なコード作成の手法を学びます。
タスク1:GUIコンポーネントの実装
#pragma once
#include <iostream>
#include <string>
class PushButton {
public:
PushButton(const std::string ...
6月3日 21:30 投稿