Wonderland of C++

不要做一个浮躁的人

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  13 随笔 :: 1 文章 :: 0 评论 :: 0 Trackbacks
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

公告

常用链接

留言簿(1)

随笔档案

文章档案

Good Site

友情链接

搜索

最新评论

阅读排行榜

评论排行榜

1,解释inheritance
2,空类编译器自动添加了哪些函数
3,类型转换有哪些,分个解释
4,delete this会怎么样?
5,什么时候用到拷贝构造函数
6,拷贝构造函数为什么不用值传递
7,static关键字的问题,static members,static function意思。可否从object调用static function?
8,stl,什么时候用list,什么时候用vector,两者的区别是什么。
9,解释override,定义为override的函数需要什么条件
10,virtual destructor的作用,为什么要virtual

1,解释inheritance
...自己发挥,说些显示生活的中继承相关的东西会更形象生动。
2,空类编译器自动添加了哪些函数
应该产生默认构造函数、析构函数、拷贝构造函数、赋值操作符函数。
3,类型转换有哪些,分个解释
static_cast:普通转换
const_cast:将const转换成非const
dynamic_cast:将父类指针或引用转化为子类指针或引用,如果指针或引用指向的确为待转化子类,则成功转化,否则抛出异常(引用情况)或返回0(指针情况)。
reinterpret_cast:通常为操作数的位模式提供较低层次的重新解释。就是当前内存解释为某种类型对象。
4,delete this会怎么样?
如果对象是new来的,那么delete应该没关系,但是后来不能再用delete pt;如果对象是在栈中申请的,则很危险,要根据编译器不同有不同情况出现。
5,什么时候用到拷贝构造函数
初始化时,即对象未构建时使用。例如:className A(B)或className A=B;B为className类型对象。
6,拷贝构造函数为什么不用值传递
值 传递时,参数有一个初始化问题,如className( className a );调用时,要将实参赋给形参,如调用className A(B),函数先调用className a (B)需要用到拷贝构造函数,形成无限递归。即使可以,如果类很大的话,效率也是很低下的。
7,static关键字的问题,static members,static function意思。可否从object调用static function?
类的静态成员和静态函数,静态成员即为类共有的成员变量。静态函数不含this指针参数。
当然可以。
8,stl,什么时候用list,什么时候用vector,两者的区别是什么。
list即链表,如果经常插入、删除元素,则用它,
vector即数组,如果经常随机访问元素,则用它,
区别:连续存储和非连续存储,其实区别很多,可以参看数组和链表数据结构的特点。
如果既要插入又要查找,则先用list建立数据集,在将list拷贝给vector。
9,解释override,定义为override的函数需要什么条件
就是重写,首先父类的相应函数要有virtual关键字修饰,用父指针调用该函数时,根据指针实际指向对象类型调用其定义的函数,如果其没有重定义函数,则调用其父类的。
10,virtual destructor的作用,为什么要virtual
一般析构函数都要用virtual,这样析构的时候可以调用指针所指向对象(可能为子类对象)的定义的析构函数,避免一些操作未做,或资源未释放。
posted on 2008-11-27 13:22 Robert.Su 阅读(316) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理