zoukankan      html  css  js  c++  java
  • C++经典面试题汇总

    1. 下面代码输出什么?为什么?(初始化列表)

    #include<iostream>
    
    using namespace std;
    
    class Test
    {
        int m_i;
        int m_j;
    public:
        Test(int v): m_j(v), m_i(m_j)
        {
            
        }
        int getI()
        {
            return m_i;
        }
        int getJ()
        {
            return m_j;
        }
    };
    
    int main()
    {
        Test t1(1);
        Test t2(2);
        
        cout << t1.getI() << " " << t1.getJ() << endl;
        cout << t2.getI() << " " << t2.getJ() << endl;
        
        return 0;
    }

    ① 答案:

    随机数 1

    随机数 2

    ② 核心提示:

    (1)成员变量的初始化顺序与声明顺序有关,与初始化列别顺序无关

    2. 下面程序输出什么?为什么?(多态)

    #include <iostream>
    
    using namespace std;
    
    class Base
    {
    public:
        virtual void func()
        {
            cout << "Base::func" << endl;
        }
    };
    
    class Child : public Base
    {
    public:
        void func()
        {
            cout << "Child::func" << endl;
        }
    };
    
    int main()
    {
        Base* pb = new Base();
        pb->func();
        
        Child* pc = (Child*)pb;
        pc->func();
        
        delete pc;
        
        pb = new Child();
        pb->func();
        
        pc = (Child*)pb;
        pc->func();
        
        return 0;
    }

    ① 答案:

    Base::func
    Base::func
    Child::func
    Child::func

    ② 核心提示:

    (1)多态:根据实际的对象类型决定函数调用语句的具体调用目标。

  • 相关阅读:
    模式对象管理
    Oracle数据库实例
    github使用简介
    Oracle数据库安装与连接与简介
    利益相关者分析
    问题账户需求分析
    2018春季学期需求工程概论阅读计划
    JAXB在Java 9/10并且使用Tomcat 9的问题
    mysql 备份 恢复
    IntelliJ IDEA安装bower
  • 原文地址:https://www.cnblogs.com/wulei0630/p/9783632.html
Copyright © 2011-2022 走看看