23

// build /からのビデオを見ていましたが、MS開発者の何人かはC++11プログラムで次のような構文を使用していました。

auto foo = ref new Foo();

「ref」を除いて、この行のすべてが何をするかを理解しています。どういう意味ですか?

4

3 に答える 3

10

今後のVisualC++コンパイラは、WinRTオブジェクトを処理するためにこの構文を追加します(これは、次世代のCOMであり、これまでに何を行ってきましたか?COM、DCOM、COM +、ActiveXなど)。

その行はほぼ同等です:

com_ptr_t<Foo> foo = CreateInstance<Foo>();

ただしcom_ptr_t、構文を使用したの新しいバージョンもありますFoo^

于 2011-09-23T14:14:42.870 に答える
8

「refnew」は2トークンのキーワードです。これは、Windowsランタイムオブジェクトをインスタンス化し、オブジェクトの存続期間を自動的に管理するようにコンパイラーに指示します(「^」演算子を使用)。

Windowsランタイムオブジェクトをインスタンス化すると割り当てが発生しますが、ヒープ上にある必要はありません。

于 2011-09-24T13:43:55.540 に答える
2

この場合のrefは、参照カウントを表します。refを使用するクラスは、すぐに使用できる参照カウントメカニズムを備えたWinRTコンポーネントです。

于 2011-10-18T01:30:55.797 に答える