2
template<typename _Tp1>
operator auto_ptr_ref<_Tp1>() throw()
{ return auto_ptr_ref<_Tp1>(this->release()); }

template<typename _Tp1>
operator auto_ptr<_Tp1>() throw()
{ return auto_ptr<_Tp1>(this->release()); }

stl クラス auto_ptr でこの 2 つのメソッドの定義を見つけました。

誰かが私に説明してもらえますか、コンストラクター以外の関数には戻り値の型がないのはなぜですか?

4

2 に答える 2

6

それらはそれぞれauto_ptr_ref<_Tp1>andを返す暗黙の変換演算子であるためauto_ptr<_Tp1>です。これら自体が戻り型の宣言として機能します。

于 2012-09-01T20:41:59.397 に答える
2

型への変換演算子auto_ptr_refauto_ptr

n3337 12.3.2/1

フォームの名前を持つパラメーターを持たないクラス X のメンバー関数

conversion-function-id: operator conversion-type-id

conversion-type-id: type-specifier-seq conversion-declaratoropt

変換宣言子: ptr 演算子変換宣言子opt

X から conversion-type-id で指定された型への変換を指定します。

于 2012-09-01T20:42:20.113 に答える