C++勉強し直し

| コメント(3) | トラックバック(0)

仕事で久々にC++を使いはじめて、抜けていた所を勉強し直しています。

class Hoge {
public:
  Hoge(std::string n): name(n) {};
  std::string getName() { return name; };

private;
  std::string name;
}

みたいなクラスがあったときに、これだとgetNameはstringのコピーになるから、参照を返すように

string& getName();

したいけど、getNameで取って来たものをまた参照でどこかに保持させると、Hogeがデストラクトされたときにそのstringが不正参照になってしまいます。

この例では軽いstringだから参照じゃなくてコピーを返してもいいのですが、もっと重たいメンバだったりするとコピーは返すのは現実的ではなくなります。

Exceptional C++という本を見ると、この例のような場合に「オブジェクトの生存期間に気をつけよう」みたいなことが書いてあります。
短い寿命のクラスの場合には気をつけるとか、場合によって考えるしかなさそうです。

ふぅ、Javaか、せめてD言語が使えればなぁ…。

トラックバック(0)

トラックバックURL: http://soin.jp/mt/mt-tb.cgi/1415

    follow me on Twitter

    ウェブページ

    このブログ記事について

    このページは、ORIが2005年2月 4日 00:27に書いたブログ記事です。

    ひとつ前のブログ記事は「光麺」です。

    次のブログ記事は「OS X 10.4 の Quartz Composer の元製品を発見」です。

    最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

    Powered by Movable Type 4.23-ja