zoukankan      html  css  js  c++  java
  • 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的。

  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/ytxwzqin/p/10131577.html
Copyright © 2011-2022 走看看