タグ

ブックマーク / faithandbrave.hateblo.jp (2)

  • Expression Template - Faith and Brave - C++で遊ぼう

    operator+ - * / のような演算子の一般的な実装では一時オブジェクトのコストが発生します。 Vector operator+(const Vector& l, const Vector& r) { const std::size_t n = l.size(); Vector tmp(l); for (std::size_t i = 0; i < n; ++i) tmp[i] += r[i]; return tmp; } そのため、以下のような式を書いた場合 Vector x, y, z, t; t = x + y + z; x + y + z では 2 つの一時オブジェクトが生成されてしまうのです。 以下のように書けば一時オブジェクトは生成されませんが const std::size_t n = x.size(); for (std::size_t i = 0; i < n;

    Expression Template - Faith and Brave - C++で遊ぼう
    mae0510
    mae0510 2011/01/23
  • Objective-CのクラスをC++でラップする方法 - Faith and Brave - C++で遊ぼう

    Objective-C と C++ のコードは、 *.mm 形式のファイルの中では混在させることができます。 なので、 Objective-C のライブラリを C++ でラップしてしまえば、ほとんどが C++ で組めるようになります。 以下はその方法 *.h では混在コードを書けないので、 C++ のクラスのメンバとして Objective-C のオブジェクトを持つには PImplイディオム を使用します。 Cpp.h #ifndef CPP_INCLUDE #define CPP_INCLUDE #include <boost/shared_ptr.hpp> class CppHoge { struct Impl; boost::shared_ptr<Impl> pImpl_; public: CppHoge(); ~CppHoge(); void doSomething(); }; #

    Objective-CのクラスをC++でラップする方法 - Faith and Brave - C++で遊ぼう
  • 1