zoukankan      html  css  js  c++  java
  • C++面试集锦( 面试被问到的问题 )

    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++)!=''); 
                    *strDest = '';
                    return strDestCopy;
            }
    

      

  • 相关阅读:
    Web3与智能合约交互实战
    详解 Solidity 事件Event
    iOS App迁移(App Transfer)注意点
    IDFA踩坑记录
    iOS error: -34018
    Apple 的命令行交付工具“Transporter”
    关于iOS UIWebView 加载网页,点击网页内某些控件导致 Application 'UIKitApplication:xxx.xxx.xxx' was killed by jetsam.
    苹果应用内支付详解以及如何预防刷单等行为
    iOS “弱账号” 暗转 “强账号”
    好用的敏捷开发软件推荐
  • 原文地址:https://www.cnblogs.com/alinh/p/9640889.html
Copyright © 2011-2022 走看看