[C++]Member functions are instantiated only when they are used

For class templates, member functions are instantiated only when they are used. This, of course, saves time and space.
using namespace std;

template
<typename T>
class myTemplate
{
private:
typename T m_t;
public:
myTemplate(T t):m_t(t){};
T AddOne(){
return m_t + 1;
}
void Output(){cout<<m_t<<endl;}
};

int main()
{
myTemplate
<int> i(10);
i.AddOne();
i.Output();
myTemplate
<string> s("temp");
//s.AddOne(); // Compile error becasue std::string has no operator + with int type
s.Output(); // however, this line has no issue
return 10;
}
posted @ 2011-07-04 11:48  嗷嗷  阅读(197)  评论(0编辑  收藏  举报