[计算机科学经

Template deepnf virtual call qualify

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Guide 5.2 使用 this-> 45 此例㆗的 .template 看起來有些古怪,但是如果沒有它,編譯器無法得知緊跟其後的 "<" 代 表的是個 template argument list 的起始,而非㆒個「小於」符號。注意,只有當位於 "." 之前的 構件(construct)取決於某個 template parameter 時,這個問題才會發生。以㆖例子㆗,參數 bs 便是取決(受控)於 template parameter N。 結論是 ".template" 或 "->template" 記號只在 templates 之內才能被使用,而且它們必須緊 跟著「與 template parameters 相關」的某物體。細節請見 9.3.3 節, p.132。 5.2 使用 this-> 如果 class templates 擁有 base classes,那麼其內出現的成員名稱 x 並非總是等價於 this->x,即 使 x 係繼承而來。例如: template <typename T> class Base { public: void exit(); }; T Base exit T Derived template <typename T> class Derived : public Base<T> { foo public: void foo() { exit(); // 要不就呼叫外部 exit(),要不就發生編譯錯誤。 } }; 本例在 foo()內決議(resolving)"exit" 符號時,定義於 Base 的 exit()會被編譯器忽略。因 此,你要嘛獲得㆒個編譯錯誤,要嘛就是喚起㆒個外部的 exit()。 我們將在 9.4.2 節, p.136 詳細討論這個問題。目前可視為㆒個準則:使用與 template 相關的符號 時,建議總是以 this->...
View Full Document

This note was uploaded on 08/25/2012 for the course EECS 101 taught by Professor Wre during the Fall '12 term at Beacon FL.

Ask a homework question - tutors are online