C与C++经典面试题(内存泄露)

C与C++经典面试题(内存泄露)

ID:37921727

大小:78.00 KB

页数:19页

时间:2019-06-02

C与C++经典面试题(内存泄露)_第1页
C与C++经典面试题(内存泄露)_第2页
C与C++经典面试题(内存泄露)_第3页
C与C++经典面试题(内存泄露)_第4页
C与C++经典面试题(内存泄露)_第5页
资源描述:

《C与C++经典面试题(内存泄露)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C、C++语言面试题2007-07-1518:571.已知strcpy函数的原型是:char*strcpy(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。不调用C++/C的字符串库函数,请编写函数strcpy答案:char*strcpy(char*strDest,constchar*strSrc){if(strDest==NULL

2、

3、strSrc==NULL)returnNULL;if(strDest==strSrc)returnstrDest;char*tempptr

4、=strDest;while((*strDest++=*strSrc++)!=‘’);returntempptr;}2.已知类String的原型为:classString{public:String(constchar*str=NULL);//普通构造函数String(constString&other);//拷贝构造函数~String(void);//析构函数String&operate=(constString&other);//赋值函数private:char*m_data;//用于保存字符串};请编写String的上述4个函数。

5、答案:String::String(constchar*str){if(str==NULL)//strlen在参数为NULL时会抛异常才会有这步判断{m_data=newchar[1];m_data[0]='';}else{m_data=newchar[strlen(str)+1];strcpy(m_data,str);}}String::String(constString&other){m_data=newchar[strlen(other.m_data)+1];strcpy(m_data,other.m_data);}String

6、&String::operator=(constString&other){if(this==&other)return*this;delete[]m_data;m_data=newchar[strlen(other.m_data)+1];strcpy(m_data,other.m_data);return*this;}String::~String(void){delete[]m_data;}3.简答3.1头文件中的ifndef/define/endif干什么用?答:防止该头文件被重复引用。3.2#include

7、#include“filename.h”有什么区别?答:对于#include,编译器从标准库路径开始搜索filename.h对于#include“filename.h”,编译器从用户的工作路径开始搜索filename.h3.3在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为:voidfoo(intx,inty);该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生

8、像_foo_int_int之类的名字。C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。3.4一个类有基类、内部有一个其他类的成员对象,构造函数的执行顺序是怎样的。(Autodesk)答:先执行基类的(如果基类当中有虚基类,要先执行虚基类的,其他基类则按照声明派生类时的顺序依次执行),再执行成员对象的,最后执行自己的。3.5请描述一个你熟悉的设计模式(Autodesk)3.6在UML中,聚合(aggregation)和组合(composition)有什么区别Autodesk)答案:聚合关系更强,类似于pages和book的

9、关系;组合关系要弱,类似于books和bookshelf的关系。3.7C#和C++除了语法上的差别以外,有什么不同的地方?(Autodesk,Microsoft)答案:(C#我只是了解,不是很精通)(1)c#有垃圾自动回收机制,程序员不用担心对象的回收。(2)c#严禁使用指针,只能处理对象。如果希望使用指针,则仅可在unsafe程序块中能使用指针。(3)c#只能单继承。(4)必须通过类名访问静态成员。不能像C++中那样,通过对象访问静态成员。(5)在子类中覆盖父类的虚函数时必须用关键字override,覆盖父类的方法要用关键字new3.8A

10、DO.net和ADO的区别?答案:实际上除了“能够让应用程序处理存储于DBMS中的数据“这一基本相似点外,两者没有太多共同之处。但是ADO使用OLEDB接口并基于微软的COM技术

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。