面试题六(自己yy的)
2012-04-06 10:53
239 查看
涉及到C++的类构造函数以及析构函数的一些基本概念,附上个人分析,可能有错误,还望不吝指出。
代码如下:
输出如下:
分析如下:
default constructor:调用temp无参数构造函数
constructed by 5:5隐式转换,调用BB::BB(int)
test:Play返回的时候相当于语句BB xx=b;调用拷贝构造函数
destructed:返回值构造完毕,销毁b
test =:temp=xx;因为temp已经构造完毕,这里只是调用赋值函数
destructed:调用完temp=xx;销毁xx,因为xx只是属于Play函数的一部分,执行返回后的下一条语句前就会被销毁
destructed:main函数返回,temp被销毁
代码如下:
#include <iostream> using namespace std; class BB{ private: int data; public: BB(){ cout<<"default constructor"<<endl; } ~BB(){ cout<<"destructed"<<endl; } BB(int i):data(i){ cout<<"constructed by "<<data<<endl; } BB(BB &b){ cout<<"test"<<endl; }; BB &operator=(BB &b){ cout<<"test ="<<endl; return b; } }; BB Play(BB b){ return b; } int main(int argc, char *argv[]) { BB temp; temp=Play(5); return 0; }
输出如下:
分析如下:
default constructor:调用temp无参数构造函数
constructed by 5:5隐式转换,调用BB::BB(int)
test:Play返回的时候相当于语句BB xx=b;调用拷贝构造函数
destructed:返回值构造完毕,销毁b
test =:temp=xx;因为temp已经构造完毕,这里只是调用赋值函数
destructed:调用完temp=xx;销毁xx,因为xx只是属于Play函数的一部分,执行返回后的下一条语句前就会被销毁
destructed:main函数返回,temp被销毁
相关文章推荐
- ADC0832的C程序(我怎么感觉网上的各种坑爹,还是自己YY了一个)
- 学习嵌入式C语言面试题,提高自己的能力。
- Android面试题精选,自己收藏下
- 整理下自己使用的sqlserver DBA面试题
- 自己平时容易忽视的java面试题
- 据说是百度的面试题之一,自己写的答案
- 【Java面试题】53 能不能自己写个类,也叫java.lang.String?
- 自己总结的一些flex 面试题
- 百度面试题:自己实现strlen,考虑32位,64位机器,考虑性能
- 一面试题!未见答案,可回复自己认为的答案。
- 刚看到一个前端面试题, 左边固定,右边自适应, 就根据自己想的自己写了下试试
- 面试题:谈谈自己对spring的理解
- ThoughtWorks面试题(标记给自己看)
- C语言面试题大汇【同时考察下自己的C语言能力】
- 自己总结的java相关面试题
- 自己yy的Splay
- Android之面试题精选,自己收藏下
- php高级工程师面试题,行不行对照看下自己的实力
- 15+N个顶级网上流行的Java多线程面试题及自己总结的答案(遇到即会更新)
- 2017自己前端面试题总结