Chinaunix首页 | 论坛 | 博客
  • 博客访问: 654090
  • 博文数量: 150
  • 博客积分: 4070
  • 博客等级: 中校
  • 技术积分: 1795
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-23 21:44
文章分类

全部博文(150)

文章存档

2012年(1)

2011年(123)

2010年(26)

分类: C/C++

2011-06-21 13:39:59

1.介绍一下STL,详细说明STL如何实现vector。
 
  答:STL 是 Standard Template Libary 的,翻译成中文叫做标准模版库.
      它是是容器,算法和迭代器的集合.通过迭代器作为桥梁将容器和算法
      联系起来.容器是用来存储数据的,算法是用来操作数据的.容器是模版化
      的数据集和,算法是泛形化的数据操作.利用 STL 进行开发,可以减轻对于动态内存的操作,利于程序开发和维护.
      vector 是一个动态的数组,它的连续性其实是一种假象.vector 动态的扩大容量的大小,是这样来实现的.首先来申请一个适合的存储空间,将原来的内容拷贝进新的存储空间,再把旧的空间释放掉.
    
2.指针和引用有什么分别;如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?
  答: 指针和引用的区别:
   (1) 引用必须初始化,指针无需.
   (2) 引用经过编译器的优化不占用存储空间,
       在 32 位机器下指针占4个字节.
   (3) 引用和被引用的对象是同一个对象,
       指针内存放的是指向对象的地址.
   (4) 指针可以改变所指的对象,
       引用一经初始化就不可改变.
   (5) 引用利于理解,指针容易混淆.
      传引用确实比传指针安全,就如上面(4)所言指针可以改变指向.如果我们为函数传入数组的首地址,而在函数内意外的修改了该首地址,可能会出现意向不到的后果.
  
      我使用常量指针难道不行.这样是不行的,因为常量指针的指针的意识是
      指针不可以改变指向,但是可以更改指针所指的内容.这样也可能带来意想不到的后果.
      如果非要指针的话,你可以这样的定义 const int*const p = &a;
      但是这样的可读性没有引用好,因此建议使用引用.

3.参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么;
   答: 参数的传递方式有传递地址和传递数值两种方式。      
        实现多态参数传递采用传递地址的方式。     
        第三问不是很清楚。
4.构造函数可否是虚函数,为什么?析构函数呢,可否是纯虚的呢? 
   答:构造函数不可是虚函数,因为在构造里面是需要明确的知道要构造什。
       虚函数是不确定的,因此可能会带来意想不到的后果。
       析构函数可以是纯虚的。虽然在语法上正确,但是在实际开发过程不应该这样声明,因为基类的纯虚函数不可以定义。因此如果类中有动态申请的空间,这样可能会造成内存泄漏。
5. 拷贝构造函数相关问题,深拷贝,浅拷贝,临时对象等。
   答: 深拷贝是将资源和指针全都拷贝,而浅拷贝仅仅拷贝指针。
        如果拷贝拷贝构造函数是浅拷贝,程序可能造成对同一块内存删除两次的情况,这样程序会崩溃。还有一种情况如果,指针改变了
        指向将造成内存泄漏。 
        临时对象的开销比局部对象要小,临时对象不可以做左值。
6. 基类的有1个虚函数,子类还需要申明为virtual吗?为什么。  
   答: 不需要。因为编译器会把它当作虚函数处理。
7. C++和C定义结构的分别是什么。
   答: C 中只有数据,而且都是公有的。
        C++ 中有数据也有函数,默认的是私有的。
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liujiwei2007/archive/2007/05/18/1615268.aspx
阅读(652) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~