zoukankan      html  css  js  c++  java
  • c++的友元类、方法及其益处

    在java中,我们知道除了public和private,protected外,还有默认的包可见性访问级别,虽然如此,很多时候出于早期设计缺陷的原因,我们需要访问一些包或者protected可见性级别的方法,这个时候就比较麻烦了,要是选择和目标服务在相同包中,总看起来很奇怪,如果作为子类继承,则更加奇怪。但是我们又不想把该接口服务的可见性声明为public。

    c++中,这一点做的就比较好,我们知道在c++中,有友元类、方法的特性,该特性相当于白名单的作用,当一个类或者成员函数、非OO函数被声明为目标类的友元时,它可以访问任何包括private的成员熟悉、函数。如下所示:

    #pragma once
    class Base
    {
        int j;
    public:
        int i; //仅为了测试方便
        Base(void);
        ~Base(void);
        virtual void testDynCast();
        friend void globalFriend(); //友元函数
        friend class FirstCPPCls;  //友元类
    };
    #include "stdafx.h"
    #include "FirstCPPCls.h"
    #include "Base.h"
    
    FirstCPPCls::FirstCPPCls(void)
    {
        Base b;
        b.j = 1;
    }

     这样,就可以精确的按照需要控制可见范围。

    其他可以参考下http://blog.chinaunix.net/uid-790245-id-2037327.html

  • 相关阅读:
    三阶魔方公式
    XML解析GData、XMLParser
    xib_cell布局适配高度
    SizeClass
    Storyboard界面传值
    Masonry(第三方库)的使—代码实现屏幕适配
    UITableView
    AFNetworking网上加载数据及JSON解析
    UICollectionView
    OC面向对象-多态
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6361673.html
Copyright © 2011-2022 走看看