C++模版:类模版的友元函数
2021/10/29 12:09:36
本文主要是介绍C++模版:类模版的友元函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
类模版可以有友元函数。
友元函数可以是普通函数。
template <typename T> class Stack { private: T items[10]; int top; public: Stack(); void setTop(int top); bool isEmpty(); friend int size2(Stack<T> & stack); };
size2()
并不是函数模版,但它的参数是类模版。定义size2()
,其类模版参数必须指定类型。
int size2(Stack<int> & stack) { return stack.top; }
size2()
只能接受Stack<int>
。如果使用Stack<double>
,则程序编译失败:Undefined symbol: size2(Stack<double>&)
。
void test9() { Stack<int> a; a.setTop(2); int length2 = size2(a); std::cout << "Stack<int> a length2: " << length2 << std::endl; Stack<double> b; // size2(b); // Undefined symbol: size2(Stack<double>&) }
友元函数可以是函数模版。
template <typename T> class Stack { private: T items[10]; int top; public: Stack(); void setTop(int top); bool isEmpty(); template <typename T4> friend int size4(T4 & stack); };
size4()
是函数模版,其定义如下。
template <typename T4> int size4(T4 & stack) { return stack.top; }
size4()
只能接受这样的类型:包含成员变量top
。Stack
是符合的。
void test10() { Stack<int> a; a.setTop(4); int length4 = size4(a); std::cout << "Stack<int> a length4: " << length4 << std::endl; }
阅读原文,关注公众号[空与一]
这篇关于C++模版:类模版的友元函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris
- 2024-05-292024年IDC行业的深度挖掘:机遇、挑战与未来展望
- 2024-05-29五款扩展组件齐发 —— Volcano、Keda、Crane-scheduler 等,邀你体验
- 2024-05-29AutoMQ 对象存储数据高效组织的秘密: Compaction
- 2024-05-29活动预告|来 GIAC 大会听大数据降本利器:AutoMQ 基于云原生重新设计的 Kafka