欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

友元函数破坏信息隐藏性

程序员文章站 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

思考

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

参考文献