基础知识1

来源:互联网 发布:时下淘宝卖什么好 编辑:程序博客网 时间:2024/05/22 12:07

1 static 在C、C++中的作用

    对变量: a 静态区域,初始化为0; b 在程序刚开始运行时就完成出初始化,也是唯一一次初始化。控制变量的可见范围。保持变量内容持久。

    对变量、函数(主要):这是与全局变量的差别,“隐藏”,不同文件中,使用相同函数名,不会发生冲突;例如,A文件中函数名加了static,则B文件看不到。

2 sizeof strlen区别

    举例说明:

    sizeof(“hello”)=6;strlen(“hello”)=5;

    char*ss=“0123456789”;

    sizeof(ss)=4;//单位指针长度

    sizeof(*ss)=1;//首字符0的长度

    strlen(ss)=10;

    char str[20]=“0123456789”;

    sizeof(str)=20;//整个数组的大小

    strlen(str)=10;//字符串长度

3 指针 引用

     a 指针:编译器为其分配一个4字节(32位机器)的内存

        引用:不占任何内存,与绑定对象共享内存空间

     b 指针:初始化以后可以改变指向对象,间接访问

        引用:定义时必须初始化,使用后不能再改变

     c 如果pa是指针,*pa是引用

     d指针有const,引用没有const

     e指针可以为空,引用不可为空

      f  sizeof(指针)是4,sizeof(引用)是变量大小

     g 自增时意义不同

     h 指针不安全,引用安全。

4  虚函数

     基类的指针,指向不同派生类的对象时。基类调用其虚成员函数,真正指向对象的成员函数。是多态的基础。是覆盖。

     例如,B0 p; p=&B1; p+&B2; 如果不是虚函数,执行结果是B0,B0,B0;有虚函数,执行结果是B0,B1,B2。

5 栈,堆

    栈区:编译器分配释放,参数值,局部变量值。类似数据结构中的栈。

    堆区:程序员自己管理分配释放。类似数据结构中的链表。

6 new与mallco区别

    mallco是函数 void 型,

    new是操作符,返回new的类型,执行构造析构函数。

7 内联函数

    首先内联函数必须精简。不能用循环or开关语句。定义必须在第一次调用之前。

    定义在函数体内的函数。可以像宏一样展开,不用压栈。解决了程序中函数调用的效率问题。

    宏在++i时会产生二义性。内联函数不会。

    宏是在预处理器中,内联函数是在编译器中。

8 重载

    C++中多态的一种表现形式。函数名相同,但参数不同。

    C++中多态:虚函数,模板,重载,转换。

9 #include <> ""区别

    〈〉是在编译器类库路径下查找。“”是在自己程序目录下查找

10 友元

      友元不是成员函数。但是它可以访问类中的私有成员。作用:可以提高程序的运行效率。缺点:破坏了封装性和隐藏性。

11 类/结构 区别

     类:堆上分配,有构造+析构函数,可继承、被继承。

    结构:栈上分配,速度快,但资源有限。

12 类/结构 访问权

     类中的成员变量是私有

     结构中的成员变量是公有,可被任何函数使用。