//第一题 问下面的输出结果是 什么?
#include <stdio.h>
#include <iostream>
using namespace std;
class A
{
protected:
int m_data;
public:
A(int data = 0)
{
m_data = data;
}
int GetData()
{
return doGetData();
}
virtual int doGetData()
{
return m_data;
}
};
class B: public A
{
protected : int m_data;
public:
B(int data = 1)
{
m_data = data;
}
int doGetData()
{
return m_data;
}
};
class C : public B
{
protected : int m_data;
public :
C(int data = 2)
{
m_data = data;
}
};
int main()
{
C c(10);
cout<<c.GetData() << endl;
cout<<c.A::GetData()<<endl;
cout<<c.B::GetData()<<endl;
cout<<c.C::GetData()<<endl;
cout<<c.doGetData()<<endl;
cout<<c.A::doGetData()<<endl;
cout<<c.B::doGetData()<<endl;
cout<<c.C::doGetData()<<endl;
return 0;
} 答: 为 1 1 1 1 1 0 1 1 具体请参看程序员面试宝典 P134
第二题 :
#include <stdio.h>
#include <iostream>
using namespace std;
class A
{
protected:
int m_data;
public:
A(int data = 0)
{
m_data = data;
}
int GetData()
{
return doGetData();
}
int doGetData()
{
return m_data;
}
};
class B: public A
{
protected : int m_data;
public:
B(int data = 1)
{
m_data = data;
}
int doGetData()
{
return m_data;
}
};
class C : public B
{
protected : int m_data;
public :
C(int data = 2)
{
m_data = data;
}
};
int main()
{
C c(10);
cout<<c.GetData() << endl;
cout<<c.A::GetData()<<endl;
cout<<c.B::GetData()<<endl;
cout<<c.C::GetData()<<endl;
cout<<c.doGetData()<<endl;
cout<<c.A::doGetData()<<endl;
cout<<c.B::doGetData()<<endl;
cout<<c.C::doGetData()<<endl;
//cout << A::doGetData()<<endl; 这种调用方式是错的
return 0;
}
/*
结果为 0 0 0 0 1 0 1 1
*/#include <stdio.h>
#include <iostream>
using namespace std;
class A
{
public:
static void doGetData()
{
printf("A");
}
};
class B: public A
{
public:
void doGetData()
{
printf("B");
}
};
int main()
{
B b ;
b.doGetData();
b.A::doGetData();
return 0;
}
/*
结果为 B A
*///问以下输出什么
#include <stdio.h>
#include <iostream>
using namespace std;
class A
{
public:
A()
{
printf("A的空参数构造函数\n");
}
A(int i)
{
printf("A的构造函数\n");
}
~A()
{
printf("A的析构函数\n");
}
A(const A&other)
{
printf("A的copy构造函数\n");
}
};
A play(A a)
{
return a;
}
int main()
{
A temp = play(5);
return 0;
}
c++ 笔试面试题 难题精选 持续更新,布布扣,bubuko.com
原文:http://blog.csdn.net/hnust_xiehonghao/article/details/23037401