zoukankan      html  css  js  c++  java
  • C++_代码重用3-私有继承

    使用包含:易于理解,类声明中包含表示被包含类的显式命名对象,代码可以通过名称引用这些对象;

    使用继承:将使关系更抽象,且继承会引起很多问题,尤其是从多个基类继承时。

     

    私有继承所提供的特性确实比包含多。

    通常,应使用包含来建立has-a关系;如果新类需要访问原有类的保护成员,或需要重新定义虚函数,则应使用私有继承。

    保护继承

    保护继承:基类的公有成员和保护成员都将成为派生类的保护成员。

    私有继承与保护继承的区别,在第三代继承中就体现出来了。使用私有继承时,第三代类不能使用基类的接口;使用保护继承时,基类的公有方法在第二代中将变成受保护的,因此第三代派生类可以使用它们。

    使用using重新定义访问权限

    (在继承提供了一种机制来对基类公有方法的访问权限的控制,属性的改变):使用保护派生或私有派生时,基类的公有成员将成为保护成员或私有成员。

           假设要让基类的方法在派生类中可用,可以有两种方法:

    1) 定义一个使用该基类方法的派生类方法:

     

    2) 将函数调用包装在另一个函数调用中:

    在类声明中使用using;

    class Student:private std::string, private std::valarray<double>

    {

    public:

            using std::valarray<double>::min;

            using std::valarray<double>::max;

    }

     

    using声明使得valarray类的min,max方法可用,就像是Student类的公有方法一样;

    而且注意使用using声明时,只使用成员名,没有圆括号,函数特征标,返回类型。

    Using声明只适用于继承,而不适用与包含。

  • 相关阅读:
    Java实现微生物增殖
    HttpClient学习整理
    在Eclipse中使用JUnit4进行单元测试(初级篇)
    http post提交数组
    postman测试post请求参数为json类型
    【springmvc】传值的几种方式&&postman接口测试
    postman的使用方法详解!最全面的教程
    Gson 使用总结 高级用法
    各个JSON技术的比较(Jackson,Gson,Fastjson)的对比
    Session保存用户名到Session域对象中
  • 原文地址:https://www.cnblogs.com/grooovvve/p/10422239.html
Copyright © 2011-2022 走看看