码迷,mamicode.com
首页 > 编程语言 > 详细

C++经典面试题汇总

时间:2018-10-13 19:54:27      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:++   对象类型   names   类型   面试   pre   ace   c++经典   let   

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)多态:根据实际的对象类型决定函数调用语句的具体调用目标。

 

C++经典面试题汇总

标签:++   对象类型   names   类型   面试   pre   ace   c++经典   let   

原文地址:https://www.cnblogs.com/wulei0630/p/9783632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!