2008-05-17から1日間の記事一覧

クラスの値渡し、戻り値

C++

g++とVCで結果が違う… #include <iostream> using namespace std; inline void debug(const char *s, long id) { cerr << s << ":" << id << endl; } class Foo { private: int i; public: Foo(int i) : i(i) { debug("Foo::Foo()", i); }; ~Foo() { debug("Foo::~Foo(</iostream>…

link: コピーコンストラクタとデフォルトコピーコンストラクタ

C++

http://homepage3.nifty.com/~masumoto/cpp/topic/index.html#SEC6 コピーコンストラクタなんてあるのかー。

フレンド関数を使う

C++

便利さがまだよくわからない。 #include <iostream> using namespace std; class Foo { private: int i; public: Foo(int i) : i(i) {}; friend void puts(Foo foo); }; void puts(Foo foo) { cout << foo.i << endl; } int main() { Foo foo(100); puts(foo); return </iostream>…

クラスの値渡し、戻り値 その2

C++

宣言時に初期化を行わないようにしたら、また動作が変わった。 #include <iostream> using namespace std; inline void debug(const char *s, long id) { cerr << s << ":" << id << endl; } class Foo { private: int i; public: Foo(int i) : i(i) { debug("Foo::Foo</iostream>…

RVO / NRVO

C++

えーと…RVOで関数内での自動変数の生成が呼び出し元のスコープでの自動変数の生成になったりする、と。 で、関数内で変数にバインドされてても最適化してくれるのがNRVO、と。 …あってるかな?素直にポインタ使えってことかなー。