//第一题 问下面的输出结果是 什么?
#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