面试训练海涛54题
来源:互联网 发布:淘宝代运营公司做商务 编辑:程序博客网 时间:2024/04/28 20:48
运行下图中的C++代码,输出是什么?
#include <iostream> class A{private: int n1; int n2;public: A(): n2(0), n1(n2 + 2) { } void Print() { std::cout << "n1: " << n1 << ", n2: " << n2 << std::endl; }}; int _tmain(int argc, _TCHAR* argv[]){ A a; a.Print(); return 0;}
类构造函数 变量初始化顺序,是按照定义的先后来初始化的
因此
n2(0), n1(n2 + 2)当然先初始化n1,然后初始化n2. 当然此时n2是一个随机值,所以n1随机值,然后n2为0
题目(13):编译运行下图中的C++代码,结果是什么?(A)编译错误;(B)编译成功,运行时程序崩溃;(C)编译运行正常,输出10。请选择正确答案并分析原因。
#include <iostream> class A{private: int value; public: A(int n) { value = n; } A(A other) { value = other.value; } void Print() { std::cout << value << std::endl; }}; int _tmain(int argc, _TCHAR* argv[]){ A a = 10; A b = a; b.Print(); return 0;}没看明白解答,回头看看c++
海涛答案
答案:编译错误。在复制构造函数中传入的参数是A的一个实例。由于是传值,把形参拷贝到实参会调用复制构造函数。因此如果允许复制构造函数传值,那么会形成永无休止的递归并造成栈溢出。因此C++的标准不允许复制构造函数传值参数,而必须是传引用或者常量引用。在Visual Studio和GCC中,都将编译出错。
题目(14):运行下图中的C++代码,输出是什么?
int SizeOf(char pString[]){ return sizeof(pString);} int _tmain(int argc, _TCHAR* argv[]){ char* pString1 = "google"; int size1 = sizeof(pString1); int size2 = sizeof(*pString1); char pString2[100] = "google"; int size3 = sizeof(pString2); int size4 = SizeOf(pString2); printf("%d, %d, %d, %d", size1, size2, size3, size4); return 0;}
当然sizeof(pString1) 为一个指针当然为4
sizeof(*pString1)实际 *pString1执行第一个字符。当然为1
sizeof(pString2)当然是数组 为100
最后一个不清楚,拿不定注意
参看海涛的答案里面说 当数组作为函数的参数传递时,数组就退化成为一个指针。当然结果为 4
题目(15):运行下图中代码,输出的结果是什么?这段代码有什么问题?
#include <iostream> class A{public: A() { std::cout << "A is created." << std::endl; } ~A() { std::cout << "A is deleted." << std::endl; }}; class B : public A{public: B() { std::cout << "B is created." << std::endl; } ~B() { std::cout << "B is deleted." << std::endl; }};int _tmain(int argc, _TCHAR* argv[]) { A* pA = new B(); delete pA; return 0; }
B类继承A ,当然先初始化A,然后在初始化B
最后面 delete pA 当然析构的A类。
但是B类没有被析构,因为不是虚函数,A类指针pa当然不能指到B类的析构函数
- 面试训练海涛54题
- 面试训练海涛56题
- 面试训练海涛53题
- 何海涛:《剑指Offer:名企面试官精讲典型编程题》 之二维数组中的查找
- 何海涛博客【算法题】
- 九度oj 第3题 跳台阶 ----何海涛:《剑指Offer:名企面试官精讲典型编程题》
- 九度oj 第6题 变态跳台阶 何海涛:《剑指Offer:名企面试官精讲典型编程题》
- 何海涛——《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
- 何海涛——《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
- 编程技术面试的五大要点 文/何海涛
- 九度oj 第1题 二维数组中的查找 何海涛:《剑指Offer:名企面试官精讲典型编程题》
- 九度oj 第3题 旋转数组的最小数字 何海涛:《剑指Offer:名企面试官精讲典型编程题》
- 求解(树的子结构问题-何海涛100题)
- 技术面试脑力训练
- 面试训练二维数组
- 面试训练替换空格
- 面试训练排序
- 面试训练打印数组
- 第七章 09_Map_1
- no Qt version assigned to this project for platform Win32
- POJ 2992 Divisors
- jdk环境变量配置
- USACO section 2.2 Runaround Numbers
- 面试训练海涛54题
- Vaadin Web应用开发教程(38):使用主题-概述
- 源码下载地址
- 第七章 10_Auto_Boxing_Unboxing
- ffmpeg+Adobe Soundbooth 分析DTMF信号
- JAVA模拟发送HTTP请求
- 【Coding】ant 的 javac标签 (归纳)
- 两招让你的U盘从坟墓中苏醒
- 【Coding】Ant脚本命令