• 面试


    面试题:

    1.考虑边际问题(将字符串转换为数字,考虑不是数字的字符,负数)

    2.考虑特殊情况  (得到链表的第k个数,都知道使用两个指针,但要考虑 k为0,链表的长度小于k的情况)

    3.定义一个空的类型,没有任务成员变量和成员函数,求sizeof, 得到的结果是1。声明实例时,必须在内存中占一定的空间。

    4.上面问题,如果加上构造函数和析构函数,还是不变,因为构造函数和析构函数只要知道函数地址即可。

    5. 上面问题,如果析构函数为虚函数, 那就不一样了,一旦是虚函数,就会为该类型生成虚函数表,并在该实例中添加一个指向虚函数的指针。在32位电脑上上是4字节的空间,在64位的机器上是8字节

    6.

    #include <iostream>
    
    using namespace std;
    
    class A
    {
    
        private: value;
        public:
        A(int n) {value=n;}
        A(A other) {value=other.value;}
        void print()
        {
            cout<<value<<endl;
        }
    }
    int main()
    {
        A a=10;
        A b=a;
        b.print();
        return 0;
    
    }
    

      编译错误

    因为复制构造函数A(A other) 传入的参数是A的一个实参,是值传递,把形参复制到实参会调用复制构造函数,会在复制构造函数内调用复制构造函数,就会形成递归条用而导致栈溢出。所以不允许复制构造函数传值参数,改为A(const A & other)

    7. 赋值运算符函数:

    定义一个赋值运算符函数: 返回一个自身的引用,才允许连续赋值。释放自身已有的内存。

    class CMyString
    {
        
        public: 
        CMyString (char * pData=nullptr);
        CMyString(const CMyString  & str);
        ~CMyString(void);
        private:
        char * m_pData;
    }
    CMyString & CMyString::operator=(const CMyString & str)
    {
        
        if(this==&str)
        return * this;
        delete[]m_pData;
        m_pData=nullptr;
        m_pData=new char [strlen(str.m_pData)+1];
        strcpy(m_pData,str.M_pData);
        return * this;
        }
  • 相关阅读:
    商业分析07_15辅助产品设计
    商业分析07_14行为序列的分析方法
    商业分析07_13路径挖掘的分析方法
    商业分析07_12精准运营推送
    商业分析07_11归因查找
    商业分析07_10高质量拉新
    商业分析07_08功能/内容上线的评估
    商业分析07_07用户留存分析
    Ubuntu14.04安装CUDA8.0与Cudnn5.1
    Windows编译libcaffe时报cudnn.hpp(114): too few arguments in function call错误
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7666123.html
Copyright © 2020-2023  润新知