
c++面试题
IOT_SHUN
这个作者很懒,什么都没留下…
展开
-
在什么情况下把析构函数定义为私有的?
在什么情况下把析构函数定义为私有的?-优快云论坛-youkuaiyun.com-中国最大的IT技术社区 http://bbs.youkuaiyun.com/topics/80208934只能用new生成的对象 用new生成的对象,在面向对象中是很有用的.它保存在堆上,可以自由控制生命周期。但如何保证一个对象只能在堆上生成呢?答案其实也很简单,只需把析构函数定义为私有成员。例如OnlyCanBeNew类定义。 1|...转载 2018-04-11 14:22:06 · 1727 阅读 · 0 评论 -
c++纯虚析构函数
纯虚析构函数和虚析构函数的区别在于纯虚析构函数一般用于将类定义为抽象类,这时候有同学会问啦?抽象类不是定义一般成员方法的吗?原因是这样的,当我们在类里面实在找不到可以定义为纯虚函数的成员方法的时候,这时候可以将析构函数定义为纯析构函数;纯虚构函数的实现需要注意以下几个地方: 通常的纯虚函数不需要函数体,是因为我们一般不会调用抽象类的这个函数,只会调用派生类的对应函数,但是父类纯虚构函数需要要...原创 2018-03-24 10:39:28 · 3066 阅读 · 0 评论 -
虚函数的常见问题
1) 虚函数是动态绑定的,也就是说,使用虚函数的指针和引用能够正确找到实际类的对应函数,而不是执行定义类的函数。这是虚函数的基本功能,就不再解释了。 2) 构造函数不能是虚函数。而且,在构造函数中调用虚函数,实际执行的是父类的对应函数,因为自己还没有构造好, 多态是被disable的。 3) 析构函数可以是虚函数,而且,在一个复杂类结构中,这往往是必须的。 4) 将一个函数定义为纯虚函数,实际上是...转载 2018-03-24 09:53:43 · 469 阅读 · 1 评论 -
c++之二分查找(递归与非递归法)
//非递归#include <iostream>using namespace std;int BinarySearch(int array[], int low, int hign, int value){ int mid = 0; while(low < hign) { mid = (low + hign)/2; if (val...原创 2018-03-24 02:25:59 · 1227 阅读 · 0 评论 -
求给定整数中二进制数1的个数
#include <iostream>using namespace std;int countx(int x){ int count= 0; while(x) { x = x&(x-1); count++; } return count;}int main(int argc, char *argv[]){ cou...原创 2018-03-24 01:57:43 · 390 阅读 · 0 评论 -
c++早绑定和晚绑定
首先我们先了解下什么叫绑定: 绑定是函数体与函数调用关联起来叫做绑定。早绑定:早绑定发送在程序运行之前,也是编译和链接阶段,类似下面func函数的调用与定义在编译阶段便已经确定,这就叫早绑定void func(){ cout<<"func"<<endl;}int main(){ func(); return 0;}晚绑定:晚绑定发生在程序运行期间,主...原创 2018-03-24 01:50:55 · 3794 阅读 · 0 评论 -
c++面向对象的三个特点,并简述
C++封装继承多态总结面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装 ...转载 2018-03-24 01:30:33 · 22771 阅读 · 0 评论 -
c++顺序表与链表的区别
C++ Lists(链表)Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.说起这个访问速率呢?给大家举个很简单的例子向量(vectors) 也就是顺序表,它的存储方法就类似于c语言的数组,那么数组可以通过下标来访问,所以效率快而用向量表存储数据,假如需要大量地插入,删除数据,效率就很慢了,为什么呢?原因 如图e...原创 2018-03-24 01:12:36 · 685 阅读 · 0 评论 -
c++虚析构函数的作用
如果析构函数不是虚的,则只将调用对应于指针类型的析构函数#include <iostream>using namespace std;class Father{ public: void show(){ cout<<"I am father"<<endl; } ~Father(){ cout<<"fat...原创 2018-03-24 01:10:37 · 151 阅读 · 0 评论 -
c++_explicit的作用
在C++中,explicit关键字主要用于防止隐式转换(避免构造函数的参数自动转换为类对象的标识符),用于修饰构造函数、复制构造函数。#include <iostream>using namespace std;class Test{public: Test(int i) { cout<<"构造函数"<<endl; } int ...原创 2018-03-24 00:41:44 · 516 阅读 · 0 评论 -
宏定义中使用do{}while(0)的好处 (转载)
#define MACRO_NAME(para) do{macro content}while(0) 的格式,总结了以下几个原因: 1,空的宏定义避免warning:#define foo() do{}while(0)2,存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。3,如果出现在判断语句过后的宏,这样可以保证作为一个整体来是实现: #...转载 2018-08-22 10:26:27 · 632 阅读 · 0 评论