博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++面试遇到问题
阅读量:5077 次
发布时间:2019-06-12

本文共 2239 字,大约阅读时间需要 7 分钟。

1. C 和 C++ 区别

    

2. const 有什么用途

    主要有三点:

      1:定义只读变量,即常量 

      2:修饰函数的参数和函数的返回值 

      3: 修饰函数的定义体,这里的函数为类的成员函数,被const修饰的成员函数代表不修改成员变量的值

 

3. 指针和引用的区别

    1:引用是变量的一个别名,内部实现是只读指针

    2:引用只能在初始化时被赋值,其他时候值不能被改变,指针的值可以在任何时候被改变

    3:引用不能为NULL,指针可以为NULL

    4:引用变量内存单元保存的是被引用变量的地址

    5:“sizeof 引用" = 指向变量的大小 , "sizeof 指针"= 指针本身的大小

    6:引用可以取地址操作,返回的是被引用变量本身所在的内存单元地址

    7:引用使用在源代码级相当于普通的变量一样使用,做函数参数时,内部传递的实际是变量地址

 

4. C++中有了malloc / free , 为什么还需要 new / delete     

1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。  2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。     对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。     由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。  3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。

 

 

5. 编写类String 的构造函数,析构函数,拷贝构造函数和赋值函数

 

6. 多态的实现

7. 单链表的逆置

 

8. 堆和栈的区别   

一个由c/C++编译的程序占用的内存分为以下几个部分   1、栈区(stack)―   由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。   2、堆区(heap) ―   一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。     注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。   3、全局区(静态区)(static)―,全局变量和静态变量的存储是放在一块的,     初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放   4、文字常量区  ―常量字符串就是放在这里的。 程序结束后由系统释放   5、程序代码区―存放函数体的二进制代码。

 

 

10. 不调用C/C++ 的字符串库函数,编写strcpy

char * strcpy(char * strDest,const char * strSrc)        {                if ((strDest==NULL)||strSrc==NULL))                                        return NULL;                    char * strDestCopy=strDest;                 while ((*strDest++=*strSrc++)!='\0');                 *strDest = '\0';                return strDestCopy;        }

 

 

11. 关键字static的作用

    1.  函数体内 static 变量的作用范围为该函数体,不同于 auto 变量, 该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值

    2.  在模块内的 static 全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问

    3.  在模块内的static 函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内

    4.  在类的static 成员变量属于整个类所拥有,对类的所以对象只有一份拷贝

    5.  在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的 static 成员变量

   

     介绍它最重要的一条:隐藏。(static函数,static变量均可) --> 对应上面的2、3项

        当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
        举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。

//a.c    char a = 'A';               // global variable    void msg()    {      printf("Hello\n");    }
//main.c   int main()   {     extern char a;       // extern variable must be declared before use     printf("%c ", a);     (void)msg();     return 0;   }

       程序的运行结果是:

     A Hello

转载于:https://www.cnblogs.com/bossbo/p/8563119.html

你可能感兴趣的文章
【原】关于定时回查出现的BUG有感
查看>>
BBC英语-like的用法
查看>>
写宏定义:得到一个field在结构体(struct type)中的偏移量。
查看>>
JavaScript------事件委托(event delegation)
查看>>
《how tomcat work》 搬运工 Chapter 9: Session Management
查看>>
C# VS如何整个项目中查找字符串
查看>>
Thinkphp中怎么接收GET变量?
查看>>
python读取csv文件并添加索引
查看>>
linux command ---1
查看>>
Android -- 打开某个指定的网站
查看>>
多线程(5)—线程通信
查看>>
Struts2
查看>>
人生最重要的一步
查看>>
dom4j解析XML
查看>>
oracle date日期类型 精析
查看>>
jsp+tomcat+mysql+sevlet+javabean配置过程
查看>>
2018ICPC青岛 E - Plants vs. Zombies (二分+模拟)
查看>>
解决Windows时间同步失败问题!系统时间同步设置!
查看>>
ITDB部署
查看>>
常见电源品牌大揭密(转贴自pceva,作者royalk)
查看>>