- 博客(28)
- 资源 (9)
- 收藏
- 关注
转载 构造函数定义为private,protected
将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法??? 提出这个问题,说明你已经对c++有所思考了。从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子类的“
2014-11-22 20:37:50 606
转载 在c++中如何阻止类被继承
这个话题是源自于一个面试题,我在网上查了一下有不少这方面的解说!我自己整理了一下,选择了一个自认为是最优方案!我们从最简单的开始:首先,大家都知道要阻止类被实例化,可以通过使用private or protected 关键字来声明默认构造函数。那么在阻止类被继承的时候,我们需要用到这个技巧。其次,阻止类被继承还需要使用private来控制继承的基类。namespace Sample
2014-11-22 17:33:30 3393
转载 钻石继承与虚继承
首先,何为钻石继承,顾名思义,在类的继承过程中,继承结构是一个类似菱形(钻石)的结构就属于钻石继承,如下: 这是一个最简单的钻石继承。实际上,在复杂的继承表中,只要子类按不同的继承路径回溯到基类有菱形结构,均属钻石继承。下面先看一个例子,钻石继承在C++程序设计中带来的问题。
2014-11-22 15:35:13 629
转载 线程与进程的联系,线程的优缺点。
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。 在Mac、Windows NT等采用微内核结构的操作系统中,进程的功
2014-11-20 22:53:38 637
转载 C++的参数传递机制
C++的参数传递机制 C++一共有三种传递方式:值传递(pass by value)、指针传递(pass by pointer)、引用传递(pass by reference)。关键点:在函数中,编译器总是要为函数的每个参数制作临时副本。引用传递除外。一.值传递。值传递很简单。唯一要注意的就是当值传递的输入参数是用户自定义类型时,最好用引用传递代替,并加上const关键字。
2014-11-20 22:05:12 2119
转载 为什么使用多线程?
1.耗时的操作使用线程,提高应用程序响应2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。3.多CPU系统中,使用线程提高CPU利用率4.改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。 使用多线程的理由之一是和进程相比,它是一种非常花销小
2014-11-20 20:47:21 636
转载 统计在从1到n的正整数中1出现的次数
问题:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。例如:N= 2,写下1,2。这样只出现了1个“1”。N= 12,我们会写下1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12。这样,1的个数是5。问题一:写一个函数f(N),返回1到N之间出现1的个数,比如f(12)= 5。解法一
2014-11-20 19:49:39 907
转载 如何减少频繁分配内存(malloc或者new)造成的内存碎片?
内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著
2014-11-18 22:08:42 2349
转载 sizeof
在腾讯的面试中,问了个关于C++中空类的大小和虚表指针(vptr)的问题。以下内容来自:http://hi.baidu.com/gengshenspirit/blog/item/55c4f2ca7f23c041f31fe743.html 初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知
2014-11-18 19:04:32 611
转载 输入一行字符串,找出其中重复出现且最长的字符串,输出它及其首字符的位置
1、问题 输入一行字符串,找出其中出现的相同且长度最长的字符串,输出它。 2、解析 例如“yyabcdabjcabceg”,输出应该为abc和3。 可以将字符串yyabcdabjcabceg分解成如下子串 yyabcdabjcabceg yabcdabjcabceg
2014-11-17 21:21:54 5375
原创 C++ string中find() ,rfind() 函数
string a="abacvvabccd";int n=a.find("ab");int m=a.rfind("ab");
2014-11-17 20:59:31 3031
转载 求字符串中连续出现次数最多的子串
#include#include #include #include using namespace std;pair fun(const string &str){vector substrs;int maxcout=1,count =1;string substr;int i,len = str.length();for(i =0;i
2014-11-17 19:18:45 748
转载 break与continue的用法区别
一般说来,程序进入循环体后在下次循环判断之前执行循环体里的所有语句,break和continue语句可以终止循环或忽略某些循环。break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即,不是跳到下一个循环周期而是退出循环。如果break语句包含在嵌套循环里,它只跳出最里面的循环。[cpp] view plaincopy
2014-11-16 17:13:48 706
转载 break、continue和return在编程中的作用
1、return 语句的作用 (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行 (2) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致,可以使用强制类型转换来是数据类型一致 (3) return 当方法说明中用void声明返回类型为空时,应使用这种格式,不返回任何值。
2014-11-16 17:07:00 1906
转载 strlen与sizeof的区别
sizeof返回对象所占用的字节大小. //正确strlen返回字符个数. //正确--------------------1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。strlen()是返回字符个数,且,这个个数应该是遇到null或'\0'之前的字符个数。
2014-11-16 16:16:58 641
原创 关于字符数组的初始化
字符数组可以在定义时进行初始化.有两种初始化方法.方法1:逐个字符赋给数组中各元素.这种方法最容易理解.例如:char c[5]={ 'H','a','p','p','y' };把5个字符分别赋给c[0]至c[4].以下是几点说明:(1) 如果大括号内提供的初值个数(即字符个数)大于数组长度,则编译时将出错.如果初值个数小于数组长度,则只将这些字符赋给前面的数组元素,其
2014-11-16 15:44:28 3827
转载 STRCPY,MEMSET,MEMCPY三者的区别
memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ '或‘/0';例:char a[100];memset(a, '/0', sizeof(a)); memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a)
2014-11-16 10:41:26 644
转载 字符串循环右移n位,函数
编写一个函数,作用是把一个 char 组成的字符串循环右移 n 个。比如原来是“abcdefghi”如果 n=2,移位后应该是“hiabcdefgh” 函数头是这样的: //pStr 是指向以'\0'结尾的字符串的指针 //steps 是要求移动的 n void LoopMove ( char * pStr, int steps ) { //请填充...
2014-11-15 10:40:24 2926
转载 strcpy和memcpy的区别
strcpy和memcpy的区别strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需
2014-11-15 10:16:37 524
转载 c++中不能重载的运算符
算术运算符:+,-,*,/,%,++,--;位操作运算符:&,|,~,^(位异或),<<(左移),>>(右移)逻辑运算符:!,&&,||;比较运算符:<,>,>=,<=,==,!=;赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=;其他运算符:[],(),->,,(逗号运算符),new,delete,new[],delete[],->*。
2014-11-12 21:53:48 879
转载 浅谈C++多态性
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定
2014-11-12 10:42:44 482
转载 二叉树的深度优先遍历和广度优先遍历
深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。如右图所示的
2014-11-11 21:53:09 614
转载 进程与线程及其区别
1.进程和线程1.1 概述:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个
2014-11-09 22:27:45 591
转载 链表--单链表的创建与查找
1、链接存储方法 链接方式存储的线性表简称为链表(Linked List)。 链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointe
2014-11-08 20:24:07 1065
转载 时针分针秒针一天重合几次
假设时针的角速度是ω(ω=π/6每小时),则分针的角速度为12ω,秒针的角速度为720ω。 分针与时针再次重合的时间为t,则有12ωt-ωt=2πn 时 分 秒1 60 360030 360 21600w 12w 720wπ/6 2π 120π0≤t≤2412wt-wt=2π*n(n=0,1,2
2014-11-08 17:00:08 2622
转载 静态变量与全局变量的区别
int a;main(){while(1){ static b=1; a=2; b++; a++;}}我们所理解的静态变量b,只知道它在上面的函数内部只初始化一次,其实是个假像 ,我要表达的是,事实上b初始化的值,不是在循环体完成的.继续下看.while(1){ st
2014-11-07 22:08:13 1430 1
转载 排序算法的稳定与不稳定
排序算法的稳定与不稳定 (非原创) 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的
2014-11-02 15:36:09 563
基于角色权限访问控制管理系统
2012-10-31
家庭视频监控系统
2012-10-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人