zoukankan      html  css  js  c++  java
  • C++知识点

    1.new申请对堆空间,方括号里必须是整型,
        int * p =new int [10] ()    加括号全部初始化为0  
        int * p =new int [10] {1,2,3,4,5}    加大括号按位置初始化 
        动态分配一个空数组是合法的    char *p =new char[0]    (合法)
        释放动态数组,delete[]p 是销毁数组中的元素,倒序销毁
        普通类型的释放 加不加 [ ] 都能释放掉,但是在类中 释放对象的时候,不加[ ],只会释放第一个对象
        剩余对象会泄露掉
        总结:new 和 delete 是关键字    malloc和free是函数
                   在类中使用new和delete会自动调用构造和析构函数    在释放多个对象的时候注意加 [ ]
     
    2.函数重载:a.相同作用域下  
                         b.函数名称相同  
                         c.参数不同           (多态性)        名称粉碎机制,给函数修改成了不同的名字
     
    3.默认参数:定义的规则必须是从右到左,连续的赋值
     
    4.引用:引用必须初始化,并且不能修改
                引用与指针的区别:
                                 引用访问变量是直接访问,而指针是先保存变量地址,间接访问
                                 引用是一个变量的别名,它不单独分配自己的内存空间,但是指针有自己的内存空间
     
    5.iostream是istream和ostream派生而来
        而cout是ostream类对象    cin是istream的类对象
     
    6. 面向对象的三大特性:封装,继承,多态 (考试必考,亲测 :) )
     
    7.类的大小有其数据成员所占空间和决定    空对象的大小为1 (也就是所谓的空类,编译器会隐士生成6个成员)
     
    8.静态成员变量和静态成员函数:
            静态成员变量属于类共享,不属于对象独有,我们可以通过对象去访问他们
            静态成员函数:首先说明:静态成员函数属于类,不属于任何对象!因此静态成员函数就不能是虚函数   虚函数属于对象所有! 
            成员变量和虚函数都属于对象创建出来,那么既然静态成员函数不是对象所有,那么静态成员函数内部就不能直接去访问类中的成员变量。只能通过在静态成员函数里面通过对象去访问
     
    9.构造函数与析构函数,调用顺序:先创建继承的构造,在类中成员变量的构造,最后自己的构造,析构顺序刚好相反
     
    10.构造函数赋值顺序,参数列表里面写的顺序没有讲究,但是赋值的顺序,是类中定义的顺序赋值,先给第一个变量赋值,如果第一个变量的值是后面成员变量的值,他就为0ffffff   对象成员的构造顺序只和定义顺序有关,和初始化列表顺序无关
     
    11.初始化列表中必须要有的:我们如果定义了成员变量中有const类型的成员,或者引用类型的成员,我们就必须在初始化列表中去初始化它!!因为他们是一经定义则必须初始化的,并且后面不能修改 。类中其他类的对象,如果有构造函数,则必须在初始化列表中出给他们初始化
     
    12。如果基类是纯虚类,那么子类中必须去实现基类的纯虚函数,如果没有实现,那么子类也就默认称为纯虚类
     
    13.重载,重写,重定义
        重载:相同作用域,函数名相同,参数不同
        重写:不同作用域,函数名相同,参数相同,基类函数必须要有virtual关键字        (虚继承的时候)
        重定义:不同作用域,(函数名相同,参数相同的时候,没有virtual关键字) 函数名相同,参数不同,virtual可有可无
     
    14.析构函数为什么能称为虚函数?(必考
             基类指针指向子类对象,是多态常见的做法,那么delete基类指针去释放空间,也是常见的做法,但是在这里,delete基类指针只会调用基类的析构函数,子类的析构函数不会被调用,所以子类的内存可能会发生泄露,所以在这里,将基类的析构函数,设置为虚函数,delete基类指针时,会同时调用派生类的析构函数
     
    15.什么函数不能是虚函数:构造函数,内联函数,友元函数,静态函数
                    也就是只有是成员函数才能称为虚函数,成员函数怎么来,靠类对象创建出来,这也就说明了 我们如果让构造函数为虚函数,类对象还没有创建出来,我们就让构造函数为虚函数,明显不对,只有调用了构造函数,才会创建出来对象
     
    16.函数模板是一组函数的描述,它不是一个实实在在的函数,表示每次它能单独处理在类型形式参数中说明的数据类型,编译器不会为其产生代码
     
    17.const问题:int const * p        int  * const p
                const在*的左边就代表我们可以修改指针指向对对象,但是不能修改它的值
                const在*的右边就代表,我们只能指向一个对象,不能更改指向对象,但是我们可以修改它的值
     
    18.友元函数的声明只能在类的内部,至于定义可以在类内,也可以在类外,他就是一个普通的函数,它不属于类,也不属于对象
     
    19.  运算符重载  自增运算符 前置++ 参数列表中没有值        后置++ 函数的参数列表(int)
            单目运算符为成员函数    双目运算符为友元函数
     
    20. C++捕获异常机制,try后面紧跟catch  中间不能有其他语句        一个try可以跟多个catch  但是多个try不能跟一个catch
     
    21. 格式控制符 %md 右边对齐数字 不足的位 左边补空格  
            %-md 反之,左边补齐,不足的右边补齐        (m为要输入几位)
            当然%ms 和 %-ms  也遵循上面原则        
     
    22.位运算符操作:按位与:  0 & 0  =0              1&0=0        0&1=0        1&1=1
                                  按位或:  0 | 0 = 0                1|0=1         0|1=1         1|1=1
                                  按位异或  0^0=0                 1^0=1         0^1=1         1^1=0
        正数负数移位的时候
        正数比较简单,左移右移都是补0
        负数:移动之前先对其二进制位取反+1,然后在符号位不变,左移右边补0,右移 左边补1。 移动完后再取反+1
                                       
    23.枚举写的时候注意格式
    1. enum DIR
    2. {
    3. up,
    4. down,
    5. left,
    6. right //最后一个不用写逗号
    7. };//不要忘记分号
    默认从0开始   所以 up=0,down=1,left=2,right=3
    如果 up=45,则 down =46,left=47,right=48
    ... 如果 up=56  则down =57  但是如果指定left=88,right就是89 (必考)
     
     
     
     
     
     
               
  • 相关阅读:
    jquery接收后台数组或集合回显复选框
    解决微信小程序滑动遮罩时底层跟着滑动的问题
    前端实现滑动开关
    css简单动画
    MyBatis的数据库操作
    前端开发面试题-JavaScript(转载)
    前端开发面试题-CSS(转载)
    前端开发面试题-HTML(转载)
    H5 canvas 实现飞机大战游戏
    vuejs学习笔记(1)--属性,事件绑定,ajax
  • 原文地址:https://www.cnblogs.com/Tempt/p/9987482.html
Copyright © 2011-2022 走看看