2013-06-27 68 views

回答

0

_return只是類型爲「參考std::ostream類對象」的變量。 它在全局命名空間::operator<<(ostream& os, const some_Obj_reference& ref)中使用返回值<<運算符進行初始化。

的TTI可以是以及 std::ostream & _return = (_os <<_event);

2

的std :: ostream的& _return = ::運算< <(_OS,_event);

特別是我想知道:_return的數據類型是什麼,以及如何在控制檯中打印它。

代碼看起來爲operator<<在全局範圍內(未在任何命名空間),其可以接受_os_event對象作爲參數。這不一定是真實的,但鑑於「< <」是正常的方式流輸出是用C++做,你可以預期,它可能會成爲一個功能,如:

std::ostream& operator<<(std::ostream&, const Event&); 

如果事件是什麼類型的_event對象有,並且我假定_os將會是的一些類型std::ostream,因此可以通過參考std::ostream來處理。

幾乎所有這些operator<<函數返回他們的第一個流參數,因此您的代碼可能做一些輸出,然後有效地分配給_return,好像它是:

的std :: ostream的& _return = _OS;

這裏,靜態類型的_return本身std::ostream& - 到std::ostream(標準輸出流)對象的引用,但運行時類型將是_os具有任何類型的...這是類型對象_return上的操作將以多態方式調用。這可能是ofstream,ostringstream或許多其他類型。

如何在控制檯中打印它。

沒有標準的方式來獲得使用C文本類型名稱++,雖然運行時態的類型確實有包括選項通常填充了某種類型名的可選文本字段運行時類型信息 - 它是否有充分的空間限定符,名字改編或什麼是不確定的,但你可以嘗試很容易就夠了:

std::cout << typeid(_return).name() << '\n'; 

(海合會,看到Unmangling the result of std::type_info::name的提示上unmangling這種類型名稱)

相關問題