友元函数破坏信息隐藏性

//
//  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

思考

  • 怎么理解变量的声明跟定义之间的关系?

参考文献

posted @ 2019-04-08 18:08  芷恬  阅读(310)  评论(0编辑  收藏  举报