友元函数破坏信息隐藏性
程序员文章站
2022-04-08 17:19:42
``` // // main.cpp // friendFunction // 1. 静态成员变量需要在类中声明,在类外定义。 // 2. 友元函数相当于成员函数,可以访问私有变量,破坏信息的隐藏性。 // 3. 模版类的的静态成员变量的定义与声明。 // Created by mac on 201 ......
// // main.cpp // friendfunction // 1. 静态成员变量需要在类中声明,在类外定义。 // 2. 友元函数相当于成员函数,可以访问私有变量,破坏信息的隐藏性。 // 3. 模版类的的静态成员变量的定义与声明。 // created by mac on 2019/4/8. // copyright © 2019年 mac. all rights reserved. // #include <iostream> using namespace std; //模版类中嵌套模版函数 //模版类 template <class gentype> class genclass { public: genclass(gentype a){ n=a; } ~genclass(){} //模版函数 template <class gentype> gentype f(gentype n){ return n; }; friend int g();//友元函数 private: static gentype n;//静态成员变量 默认初始化为0 double a=1.5; }; template <class gentype>gentype genclass<gentype>::n; int g(){ return genclass<int>::n; } int main(int argc, const char * argv[]) { genclass<int> object1(3),*p=&object1; cout<<p->f<int>(3)<<endl; cout<<g()<<endl; return 0; }
tips
- 静态成员变量需要在类外进行定义
- 标准模板库(standard template library,stl),这个库包括三种类型的通用项:容器、迭代器和算法。
- stl包括的容器有:deque、list、map、multimap、set、multimap、set、multiset、stack、queue、priority_queue、vector
思考
- 怎么理解变量的声明跟定义之间的关系?
参考文献
推荐阅读