2017年8月17日のブックマーク (5件)

  • C++クラス設計に関するノート

    C++が他のオブジェクト指向言語と比べて難しいのは、やはりメモリ管理をプログラマが自分でしなければいけない点だと思います。よくよく注意しないと、削除し忘れたり、同じオブジェクトを2度削除してしまうというエラーが発生します。このノートでは、オブジェクトを「値オブジェクト」と「参照オブジェクト」というカテゴリに分け、詳細設計の段階で注意すべき点を整理しておきたいと思います。 0. はじめに 私自身今までいくつかのプログラミング言語を使ってきましたが、C++ が他のオブジェクト指向言語と比べて難しいのは、やはりメモリ管理をプログラマが自分でしなければいけない点だと思います。例えば、 Person* person = new Person(); と生成したオブジェクトは、使い終わったら次のように削除しなければなりません。 delete person; 生成してすぐ削除するなら簡単なのですが、実際に

    C++クラス設計に関するノート
  • ぼやきごと/2012-09-26/C++11:pimplイディオムにおけるデストラクタの default 指定 - ルーチェ's Homepage

    上述のコードにおいて = default の記述がある宣言は書いても書かなくても生成されるクラスは同じです。 しかし書かなかった場合、他の人がコードを読んだ時に「コンパイラに自動生成させようとしている」のか、「単に書き忘れた」のかが区別できません。 敢えて default 指定の宣言を記述することで、「私はこれらをコンパイラに自動生成させています」というアピールになります。 また、他の人だけでなく、コンパイラにもその意図を明示的に伝えることができ、コンパイラによっては最適化の助けになる可能性もあるでしょう。 C++11では、特別な処理をさせる場合を除き、記述を省略したりましてや空っぽの実装を書いたりせずに default 指定を積極的に用いるべきです。 特にデストラクタについては、リソースの解放はメンバ変数に任せてヘッダファイルでの default 指定を義務化するくらいのつもりで考えるべ

  • 夕暮ログ VisualStudioの3種類の改行

    少し前に気づいたんですが、VisualStudioには改行の方法が3種類あります。 [Enter] いつも通り、普通の改行です。([Shift]+[Enter]も同じ) [Ctrl]+[Enter] カーソルの上に空白行を挿入します。 [Shift]+[Ctrl]+[Enter] カーソルの下に空白行を挿入します。 非常に地味ですが、意外と便利です。 Vimとかだとこういうのを探しますが、意外とVisualStudioだと探さないものです。 高度な開発環境なだけあって、思っているより結構いろいろな機能があります。 また、日頃よく使う機能にはショートカットが割り当てられているものが多いです。 標準のショートカットキーの一覧はMSDNに乗っています。 定義済みショートカット キー - MSDN もちろん、カスタマイズで変更することも可能です。 いうまでもなく、すべてを暗記することは人間業ではあ

  • Immutableなモノたち - Qiita

    どーいうことだってばよ? 2016/07/26は雨が降って、自転車に乗れなかったのでむしゃくしゃしてやった。後悔はしていない。 System.Collections.Immutableを簡単にまとめていこうかなって。 どこから取れるの? System.Collections.Immutable このあたりから落としてくれば良いかと。ただ、VisualStudio使ってるなら、Nugetでさくっと落としてきた方が楽です、えぇ。 Mutableなモノたち 普段、一般的に使っているList<T>や、配列はImmutableでは無いので、以下のような操作をした結果、操作したインスタンスの状態が変化する。 using System; using System.Collections.Generic; namespace ConsoleApplication1 { class Program { st

    Immutableなモノたち - Qiita
    dotsarg
    dotsarg 2017/08/17
    C# で変更不可能なコレクションを実現するクラス。
  • 汎用ジェネリックコレクション その2 ObservableCollection/ReadOnlyObservableCollection (System.Collections.ObjectModel) - smdn.jp

    汎用ジェネリックコレクション ページ一覧汎用ジェネリックコレクション汎用ジェネリックコレクション(1) Collection/ReadOnlyCollection汎用ジェネリックコレクション(2) ObservableCollection/ReadOnlyObservableCollection汎用ジェネリックコレクション(3) KeyedCollection System.Collections.ObjectModel.ObservableCollectionクラスは、コレクションに対する挿入・削除・設定を行った際にそれらの変更をクラス外部にイベントとして通知することができるようになっているクラスです。 ObservableCollectionクラスは、ユーザーインターフェイスとコレクションの同期したい場合などに使用されます。 ObservableCollectionクラス自体はColl

    汎用ジェネリックコレクション その2 ObservableCollection/ReadOnlyObservableCollection (System.Collections.ObjectModel) - smdn.jp