zoukankan      html  css  js  c++  java
  • C++ 基础语法&特性(4)-面向对象之继承和派生

    C++相关文章

    C++支持多重继承,这是java所不具有的(java里可用接口变相实现此功能)

    class 类名C; //若两个类相互包含,则可以前向声明一下
    class 基类名{
        /*
            关于友元
            基类的友元,不会继承到派生类 
            基类是别人的友元,则会继承(若重写了该函数,则需重新声明友元关系) 
            爹给你,儿子不一定给你。爹有权儿子也有权。 
        */
        friend class 友元类F;    //友元类F无法访问派生类,但F的子类可以访问本类私有成员 
        
        类名C c;    //报错,只声明未定义,只能为指针、引用,不可为对象(因为不确定大小)  
        类名C *c;    //正确 
    };
    
    
    class 派生类名 : 继承方式说明符 基类1 [, 访问范围说明符 基类2] {//继承方式:public/protected/private     
         /*
             关于基类同名函数
            重写时,基类里其他同名函数都将隐藏(即使参数不同) 
         */
         返回值类型 方法名[参数表]{
             基类名::基类成员    //可通过域作用符访问基类同名成员,对象.基类名::基类成员 
         } 
    };
    
    /*
        继承方式:≈对从基类继承的成员,在派生类重设访问权限 
            基类里成员访问权限大于继承方式的,重设为继承方式的值 
        若为公有继承,则: 
    */
    基类名 变量=派生类对象;     //派生类对象可赋值给基类对象
    基类名 &变量=派生类对象; //派生类对象可以初始化基类引用
    基类名 *变量=&派生类对象; //派生类对象的地址可以赋值给基类指针
    派生类名 变量 = (派生类)基类对象;   //×,反之不行,强制转换也不行
    /*
        派生类与基类互相转换 
    */ 
    派生类对象可直接转换为基类对象    // 不可访问基类中不存在的成员
    派生类 *指针 = (派生类 *)&基类对象;        //派生指针指向基类对象,需强制转换(自己把控安全,对象不可直接转换) 
    
    对于同名函数,调用时与定义时对象 or 指针类型有关(与对象实际类型无关,多态部分会讲虚函数) 
    
    
    sizeof(派生类对象)    //=基类成员【被覆盖也算】+派生类成员之和 (排除静态成员、函数(虚函数要算,下一篇会讲)) 

     综上,派生类可从基类继承的包括:

      成员变量  //静态成员为所有对象共享

      成员函数  //友元不算、构造和析构排除 

      其他类赋予基类的友元权限

    欢迎各位指点!
  • 相关阅读:
    BeautifulSoup 安装使用
    用Mediawiki做百科网站资源大参考
    ubutun 下webalizer 分析Apache日志
    网站流量统计系统 phpMyVisites
    mysql的root密码忘记解决方
    mrtg监控网络流量简单配置
    CentOS 6.4下Squid代理服务器的安装与配置,反向代理
    linux 查看文件系统类型
    JAVA多媒体编程入门(图像部分)
    log4net使用具体解释
  • 原文地址:https://www.cnblogs.com/thors/p/14333696.html
Copyright © 2011-2022 走看看