
面试C++
self_mind
知识的盛宴,个人的独享!
展开
-
char数组与char指针的区别与联系
字符串(char*)与字符数组(char[])区别在C语言中,对字符串的操作主要有两种方式:一是字符数组(char[]),二是使用字符指针(char*)。接下来最这两种所使用的情况做彻底的说明:一、字符数组字符数组的定义有两种方式:1.char s[n];n表示数据的大小。该语句可以理解为 声明一个字符数组,并且编译器为该字符数组分配n个内存空间,这是在编译期进行的。赋值有原创 2015-11-07 20:48:55 · 10815 阅读 · 2 评论 -
C++重载与覆盖的区别
重载(overload):是指编写一个与已知函数同名但是参数表不同的函数。重载主要属于静态编联范畴,是在编译期就完成地址的分配。 普通成员函数的重载主要分成三部分:(1)在一个类中说明重载。如 show(int a,char b);//在编译期经过编译器修饰后函数名会变成int_char_show show(char* c,double d);//在编译期经过编译器修饰后原创 2015-11-07 13:56:26 · 459 阅读 · 0 评论 -
静态编联与动态编联总结
编联就是将一个函数(或模块)程序内嵌到调用该函数(或模块)的程序中,然后生成可执行代码的过程。在这个过程中,对所调用的函数(或模块)分配内存地址空间,同时对外部访问也分配内存空间。根据编联所处的阶段进行分类可以分成两类:静态编联和动态编联。静态编联:静态编联又称为“早绑定”,是在编译期将函数调用和函数定义关联起来的,也就是说该函数是在编译期就已经将内存进行分配。如重载就是一种典型的静态编联原创 2015-11-06 20:39:34 · 925 阅读 · 0 评论 -
数组大小分配问题及相关问题
在使用数组的时候,总有一个问题始终困扰着我们:到底给数组分配多大的内存空间? 当给数组分配内存空间小时,会引起下标越界的情况(编译器是不会发现问题的),甚至导致严重后果。当分配的内存大时,会浪费内存空间。这是由于静态分配数组内存所引起的问题,静态分配内存是在编译器完成数组空间内存的分配,这种分配方式要求程序在编译之前就应该确定数组的分配空间。 有什么方法可以解决这种问原创 2015-11-09 15:38:14 · 1415 阅读 · 0 评论 -
C++面试1(简答题)
1.若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?答:浅拷贝问题,主要原因是当类中存在指针成员变量时,默认的拷贝构造函数只是使两个对象的指针变量指向同一个地址内存空间,从而产生浅拷贝问题。2.简述普通成员函数、静态成员函数、全局函数和友元函数的差别?答:普通成员函数只能被该类所实例化的对象所调用。静态成员函数只能被该类所调用,通过使用作原创 2015-12-10 21:54:01 · 752 阅读 · 0 评论 -
C++面试2(简答题)
1.new delete与malloc free的联系与区别?答:相同点:都是在堆中动态创建堆内存。 不同点:malloc函数创建动态内存时需要指定内存分配的字节数,但是它不能初始化动态内存对象。free函数不能调用动态内存对象的析构函数。new函数创建动态内存对象时不需要指定需要分配的字节数,它会自动调用对象的构造函数。delete函数也会自动调用析构函数。2.main函数执原创 2015-12-11 09:12:12 · 396 阅读 · 0 评论 -
C++面试3(编程)
1.如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外的指针)答:判断一个单链表是否有环最简单的做法是定义两个指针,一个指针每次递增一步,另一个指针每次递增两步,如果是有环的,那么两者必然会重合,反之亦然。代码如下:bool check(const node* head){ if (head == NULL) { return false; } node*原创 2015-12-13 15:28:15 · 456 阅读 · 0 评论 -
explict关键字的含义
explicit构造函数的作用?C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 ,2 是个默认且隐含的类型转换操作符。假如我们定义一个含有一个参数的构造函数的类,当我们写下 AAA=XXX;这样的代码时,这时编译器会自动调用这个构造器,创建一个AAA的对象。这样看起来很方便,但是却违背我们的本意,这时原创 2015-12-19 21:09:08 · 452 阅读 · 0 评论