C++知识的补充与说明

来源:互联网 发布:手机淘宝主图尺寸 编辑:程序博客网 时间:2024/06/10 18:43
  • 不要将布尔变量与任何值进行比较,那会很容易出错的。
    整形变量必须要有类型相同的值进行比较
    浮点变量最好少比点,就算要比也要有值进行限制
    指针变量要和NULL进行比较,不要和布尔型和整形比较
  • const有数据类型,#define没有数据类型
    个别编译器中const可以进行调试,#define不可以进行调试
    在类中定义常量有两种方式
    1、 在类中声明常量,但不赋值,在构造函数初始化表中进行赋值;
    2、 用枚举代替const常量。
  • 关于sizeof,C++无法知道指针所指对象的大小,指针的大小永远为4字节
    char a[]=”Hello World!”
    char *p=a;
    count <<sizeof(a)<< end; //12字节
    count <<sizeof(p)<< endl; //4字节
    而且,在函数中,数组参数退化为指针,所以下面的内容永远输出为4
    void fun(char a[1000])
    {
    count sizeof(a) endl; //输出4而不是1000
    }
  • 关于指针
    1、 指针创建时必须被初始化
    2、 指针在free 或delete后必须置为NULL
    3、 指针的长度都为4字节
    4、释放内存时,如果是数组指针,必须要释放掉所有的内存,如
    char *p=new char[100];
    strcpy(p,”Hello World”);
    delete []p; //注意前面的[]号
    p=NULL;//置为NULL
  • 关于malloc/free 和new /delete
    malloc/free 是C/C++的内存分配符,new /delete是C++的内存分配符。
    注意:malloc/free是库函数,new/delete是运算符
    malloc/free不能执行构造函数与析构函数,而new/delete可以
    C++中可以使用set_new_hander函数来定义内存分配异常的处理
  • 重载:在同一类中,函数名相同的函数。由不同的参数决定调用那个函数。函数可要不可要Virtual关键字。
    和全局函数同名的函数不叫重载。如果在类中调用同名的全局函数,必须用全局引用符号::引用。
    覆盖是指派生类函数覆盖基类函数
    函数名相同,参数相同,基类函数必须有Virtual关键字,不同的范围(派生类和基类)。
    隐藏是指派生类屏蔽了基类的同名函数相同
    1、 函数名相同,但参数不同,此时不论基类有无Virtual关键字,基类函数将被隐藏。
    2、 函数名相同,参数也相同,但基类无Virtual关键字(有就是覆盖),基类函数将被隐藏。
  • Extern “C”是由C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数。这是因为C++编译后库中函数名会变
    得很长,与C生成的不一致,造成C++不能直接调用C函数,加上extren “c”后,C++就能直接调用C函数了。
    Extern “C”主要使用正规DLL函数的引用和导出 和 在C++包含C函数或C头文件时使用。使用时在前面加上extern “c” 关键字即
    可。