类模板成员函数的实例化

来源:互联网 发布:淘宝首页有什么服务 编辑:程序博客网 时间:2024/06/05 18:31

1、  与其他函数模板不同的是,在实例化类模板成员函数的进修,编译器不执行模板实参推断,相反,类模板成员函数的模板形参由调用该函数的对象的类型确定。例如,当调用 Queue<int> 类型对象的 push 成员时,实例化的push 函数为 void Queue<int>::push(constint &val)。对象的模板实参能够确定成员函数模板形参,这一事实意味着,调用类模板成员函数比调用类似函数模板更灵活。用模板形参定义的函数形参的实参允许进行常规转换。

2、  类模板的成员函数只有为程序所用才进行实例化。如果某函数从未使用,则不会实例化该成员函数。这一行为意味着,用于实例化模板的类型只需满足实际使用的操作的要求。Queue 类中的 QueueItem 成员是指针。类模板的指针定义不会对类进行实例化,只有用到这样的指针时才会对类进行实例化。因此,在创建 Queue 对象时不会实例化 QueueItem 类,相反,在使用诸如 front、push 或 pop 这样的 Queue 成员时才实例化 QueueItem 类。

0 0
原创粉丝点击