C++基础知识面试精选100题系列(21-30)[C++ basics]
【本文链接】
【题目21】
运行下面的代码,输出结果?
【代码】
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/*
version: 1.0 author: hellogiser blog: http://www.cnblogs.com/hellogiser date: 2014/9/22 */ #include "stdafx.h" #include <iostream> using namespace std; class A { public: virtual void Fun(int number = 10) { std::cout << "A::Fun with number " << number << endl; } }; class B: public A { public: virtual void Fun(int number = 20) { std::cout << "B::Fun with number " << number << endl; } }; int main() { B b; A &a = b; a.Fun(); return 0; //虚函数动态绑定:B,缺省实参是编译时确定的。。。为10 } /* B::Fun with number 10 */ |
【分析】
虚函数动态绑定,但是缺省实参是编译时确定的,所以结果为B::Fun with number 10
【题目22】
指出下面的程序有哪些错误,并改正。
【代码】
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream>
using namespace std; class A { public: A(); ~A(); int i = 0; // ERROR static int j = 0; // ERROR const int k = 0; // ERROR const static char *p = "Hello world"; // ERROR static void fun(); }; A::A() { } A::~A() { } static void fun() // ERROR { } |
【正确代码】
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/*
version: 1.0 author: hellogiser blog: http://www.cnblogs.com/hellogiser date: 2014/9/22 */ #include "stdafx.h" #include <iostream> using namespace std; class A { public: A(); ~A(); int i ; // error static int j ; // error const int k ; // error const static char *p; // error static void fun(); }; int A::j = 0; const char *A::p = "hello world"; A::A(): i(0), k(0) { } A::~A() { } void A::fun() { } int main() { return 0; } |
【题目23】
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。