• Tips on C/C++


    运算符优先级

    !> 算术运算符 > 关系运算符 > (&& ||)> 条件运算符> 赋值运算符 > 逗号运算符

    库引用

    include   ""是先从本地目录开始寻找,然后去寻找系统路径,而Include   <>   相反先从系统目录,后从本地目录。比如:

    • 当用#include“file.h”时,先搜索当前工作目录,如果没有,再去搜索标准库,库没有再搜索资源库;
    • 当用#include<file.h>时,编译器先从标准库开始搜索,如果没再搜索资源库目录,若还未找到则搜索当前工作目录。

    抽象类不能被实例化,但是可以存在抽象类指针指向子类。

    模板类的继承包括四种:

    • 1.(普通类继承 模板类
    • 2.(类模板继承了普通类(非常常见))
    • 3.(类模板继承类模板)
    • 4.(类模板继承 模板类,即继承模板参数给出的基类)
    注:模板类是类模板的一个实例。即,类型参数具体化。

    多态

    多态主要以两种形式,静态多态和动态多态。

    静态多态主要实现了函数重载和运算符重载。

    动态多态主要实现了虚函数。虚函数是动态联编,程序在运行的过程中确定调用哪一个函数。

    重载

    函数重载的条件是:函数名相同,参数类型或者个数不同,返回类型不能视为重载。

    宏和函数

    先说宏和函数的区别:
    • 1.宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.
    • 2.宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.
    • 3.宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行时的时间.
    • 4.宏的参数是不占内存空间的,因为只是做字符串的替换,而函数调用时的参数传递则是具体变量之间的信息传递,形参作为函数的局部变量,显然是占用内存的.
    • 5.函数的调用是需要付出一定的时空开销的,因为系统在调用函数时,要保留现场,然后转入被调用函数去执行,调用完,再返回主调函数,此时再恢复现场,这些操作,显然在宏中是没有的.
    内联函数与宏的区别:
    • 1.内联函数在运行时可调试,而宏定义不可以;
    • 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;
    • 3.内联函数可以访问类的成员变量,宏定义则不能;
    • 4.在类中声明同时定义的成员函数,自动转化为内联函数。

    静态成员

    静态成员数据是属于类的,类的所有对象共享。

    静态成员依赖于类而不是对象。

    静态成员数据视作全局变量。

    数据类型

    float型数据通常用IEEE754单精度浮点数格式表示:(32位)
    三部分组成:符号位、阶码、尾数;
    1.符号位:第31位(0-31)正数--0        负数--1
    2.阶码:第30位----第23位(共8位)
    计算:将实数转化为二进制的指数表示形式,形如 a*2^n;a的取值范围应在在1~2之间,阶码 = n + 127,最后将其表示成二进制形式
    3.尾数:第22位----第0位
    上述参数a的小数部分为尾数部分
     
     
    示例: -8.25:
    1.符号位 = 1;
    2. (8.25)10 = (1000.01)2 = 1.000 01 * 2^3;        n = 3        阶码    =    3+127 = (130)10 = ( 100  0001  0)2
    3.尾数 : 000 0100  0000 0000 0000 0000
    最终结果 : 1100 0001 0000 0100 0000 0000 0000 0000
                        1        100 0001 0        000 0100 0000 0000 0000 0000
                    符号位        阶码                                    尾数

    const

    * (指针)和 const(常量) 谁在前先读谁 ;*象征着地址,const象征着内容;谁在前面谁就不允许改变。
    常量指针:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。
    指针常量:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生。
     

    struct

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。
    struct能包含成员函数吗? 能!
    struct能继承吗? 能!!
    struct能实现多态吗? 能!!!
     

    既然这些它都能实现,那它和class还能有什么区别?

    最本质的一个区别就是默认的访问控制: 

    默认的继承访问权限

    struct是public的,class是private的。

  • 相关阅读:
    c++调用win32API控制打印机打印
    php socket 通信
    [SDOI2015][BZOJ3991] 寻宝游戏|set|dfs序|虚树|树上倍增LCA
    [NOI2015][BZOJ4195] 程序自动分析|并查集|离散化
    [NOI2015][BZOJ4196] 软件包管理器|树链剖分
    [HEOI2014][BZOJ3611] 大工程|虚树|树型dp|dfs序|树上倍增LCA
    [Usaco2007 Mar][BZOJ1638] Cow Traffic 奶牛交通|动态规划
    [HDU2222]Keywords Search|AC自动机
    [POI2007][BZOJ1103] 大都市meg|dfs序|树状数组
    [Usaco2007 Dec][BZOJ1690] 奶牛的旅行|分数规划|二分|SPFA
  • 原文地址:https://www.cnblogs.com/ytxwzqin/p/10131577.html
Copyright © 2020-2023  润新知