C语言笔记(C++)

来源:互联网 发布:淘宝美食网 编辑:程序博客网 时间:2024/05/21 06:02

结构体,类在定义时没分配空间,用其定义变量时才会分配空间,所以C语言在的结构体不用有静态类型,因为静态类型在数据段,而如果在函数用用结构体定义变量,这变量在栈中,这样就冲突了,但在C++中有相应的机制处理些问题。
C++的cin.get()不读取缓冲区中的回车字符, 而cin.getline()将缓冲区中的回来读走
C++,C99,可以在任意位置定义变量,而C89必要在代码块“{ ”之后定义变量
malloc -> new  free -> delete
int *p = (int *)malloc(sizeof(int) * 4) ===> int *p = new int[4]; delete []p;
引用&p =  a;是将引用的变量与赋给它的值绷定,系统不会给引用分配内存地址,,因此引用定义时一定要赋值,而且赋值后不能再赋值,引用不能用于指针,数组。
C++调用C语言,则需要在C++文件里加上" extern "C" " { 。后面的{表示该行以后的内容都都可以被C++调用,若不加{,则只是所在行可以被C++调用。
当类中有指针,那么将些类定义的成员赋值给另一新定义的成员,注意深拷贝与浅拷贝class a; class aaa; class a bb = aa;默认下是浅拷贝,只是将类aa中的成员拷贝到bb中,但aa中指针指向的内容并没复制一份,所以aa,bb中的指针指向同一内存地址,若在aa中释放该地址,bb再引用该地址就会出错,为了避免此问题,可用深拷贝,深拷贝要自己写函数,申请内存空间。
结构体,类在定义时没分配空间,用其定义变量时才会分配空间,所以C语言在的结构体不用有静态类型,因为静态类型在数据段,而如果在函数用用结构体定义变量,这变量在栈中,这样就冲突了,但在C++中有相应的机制处理些问题。
公有继承:私有数据是继承不了的,继承来的保护,公有数据的类型保持原来的权限
私有继承,继承来的数据全变为私有数据
函数声明是不占用空间的:
class A{
    private
        int a;
    public
        int b;
    void func(void);
}
A a;  sizeof(a) = 8,(函数声明不占用空间)
类中有虚函数,则会增加4个字节,但是一个或多个虚函数的类的内存也只增加4字节不会根据虚函数的个数增加而增加,多加的4个字节是加在地址的最前端(加的是一个指针的空间).
虚类可以使没有继承关系的数据形成继承关系,从而可以实现多态

构造函数,析构函数:面试可能会考