• C++ 补课(二)


    1,如果遇到派生类成员和基类成员的名称冲突的情况,程序会采用派生类成员执行相应的操作。如果需要使用基类中的同名成员,则必须在程序中使用全局分辨符“::”

    虚基类 —— 派生类在继承基类时加入“virtual”关键字,应用中将只存在一个基类的拷贝;

    如果同意继承层次中既有虚基类又有非虚基类,那么程序执行时会先调用虚基类构造函数,然后调用非虚基类构造函数,最后调用派生类构造函数

    如果类中有成员类,成员类的构造函数被优先调用

    2,类的默认访问方式是private

    protected —— 相对于派生对象是公有的成员,相对于没有派生关系的对象是私有的成员

    3,从C++本身来讲,struct 和 class 除了默认的成员访问权限不同之外,二者之间没有任何的区别 —— struct 中默认的成员访问权限是public,设计继承关系时,如果没有显式指定派生类与父类的继承方式,class的继承方式默认是private,而struct的继承方式默认是public

    4,通过扩充派生类的构造函数,来实现向基类构造函数传递参数的操作: Derived(int x,int y):Base(y)

    5,把函数体同函数调用相关联成为捆绑 (早期捆绑——由编译器和连接器在程序运行之前的编译阶段完成的;晚期捆绑——程序运行阶段动态确定调用的函数体)

    晚期捆绑只对虚函数起作用,而且只发生在使用一个包含虚函数的基类地址时 —— 晚期捆绑是实现多态的基础

    如果一个函数在基类中被声明为 virtual ,那么在所有的派生类中它都是virtual ,派生类中的重载的虚函数的返回类型必须与基类中的原型相同

    虚函数不要重复定义(在继承类中)

    6,纯虚函数 —— 被标明为不具体实现的虚成员函数,其允许函数先声明一个操作名称而不给出操作内容,当派生类继承它以后在根据具体的需求给出适当的定义

    virtual void foo()=0; 实现一个公共的接口 —— 纯虚函数规定了继承该类的程序必须实现纯虚函数,否则程序就不能实例化

    含有纯虚函数的类成为抽象类 —— 不能被实例化

    如果派生类中没有将纯虚函数实现,则这个派生类仍然是一个抽象类

    构造函数不能使virtual —— 没有意义;析构函数可以是virtual的 —— 当使用delete操作符删除对象时,隐含对析构函数的一次调用,若是虚函数,采用动态捆绑

    7,sizeof 返回一个变量或数据类型在内存中所占用的字节数

    地址是内存单元的编号,指针则用于存放内存地址

    指针的运算 —— 取地址运算:&,返回指定变量在内存中的存储地址 ; * ,取内容运算,返回指针所指向的变量的内容

    函数指针 —— 函数类型  (*指针变量名)(参数);    函数指针指向存储区中某个函数的入口地址,因此可以通过函数指针调用相应的函数,也可以充当函数的参数(传递形参的应是某个函数的入口地址 )

    #include <stdio.h>
    
    #include <IOSTREAM.H>
    
    int Get(int (*)(int),int);
    
    int gett(int);
    
    
    
    void main()
    
    {
    
    	int num;
    
    	num=100;
    
    	cout<<Get(gett,num)<<endl;
    
    }
    
    
    
    int Get(int (*p)(int),int)
    
    {
    
    	return (*p)(int);
    
    }
    
    
    
    int gett(int i)
    
    {
    
    	return i;
    
    }
     
    指针函数 —— 返回类型为指针的函数
     
     
    8,指针与const
    const 位于指针声明符之前 —— 常量指针 —— 指针所指向的对象是一个常量

    const char * ss= “world”; —— 程序中不能试图对ss所指向的存储单元中的内容做出修改

    const 修饰符位于指针生命符之后 —— 指针常量 —— 指针所标识的地址不可改变
  • 相关阅读:
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
    html5之table嵌入form表单布局(务必注意:table标签必须在form表单内部,不能再form表单外部!)
    两张图搞清楚Eclipse上的Web项目目录
    使用VS 2019发布.net core程序并部署到IIS的最新教程
    国外便宜虚拟主机有哪些?
    怎样收用电汇来收adsense的广告费呢
    程序员同性交友网站github在国内不能访问了
    直接引用MrAdvice.dll文件不能实现AOP拦截,教你1分钟解决这个问题
    VS2019打包WPF安装程序最新教程
    通过VS2017发布.net core程序并使用Web 部署到远程服务器最新教程
  • 原文地址:https://www.cnblogs.com/sprint1989/p/3803558.html
Copyright © 2020-2023  润新知