- 博客(21)
- 收藏
- 关注
转载 C++中创建临时对象的情况
我们知道在C++的创建对象是一个费时,费空间的一个操作。有些固然是必不可少,但还有一些对象却在我们不知道的情况下被创建了。通常以下三种情况会产生临时对象: 1,以值的方式给函数传参; 2,类型转换; 3,函数需要返回一个对象时; 现在我们依次看这三种情况: 一,以值的方式给函数传参。 我们知道给函数传参有两种方式
2016-05-02 23:11:38 2478
转载 虚函数,虚析构函数,纯虚函数,抽象类
虚函数,虚析构函数,纯虚函数,抽象类。author: ZJ 07-12-31Blog: http://zhangjunhd.blog.51cto.com/1.虚函数1.1虚函数的作用虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。class Time{ public: Time(
2016-05-02 23:09:14 334
转载 友元
友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检
2016-05-02 22:54:53 291
转载 类大小的计算
初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经验,是编译器这方面的一个具体功能.首先:我们要知道什么是类的实例化,所谓类的实例化就是在内
2016-05-02 22:46:27 934
转载 计算机网络基础知识
1,计算机网络概要1,按需(而不是预分配)共享资源有时被称为统计复用(statistical multiplexing)。分组交换使用了统计复用。2,VC网络的优势:提供了QoS服务,保证了传输的最小速率和最大时延。3,POP(Point of Presence):一个POP就是某ISP网络中的一个或者多个路由器组,通过他们能够与其他ISP的路由器连接的地方。 NAP
2016-04-22 17:55:30 804
转载 二叉树的遍历(非递归和递归实现)
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对
2016-04-22 17:04:39 214
转载 二叉树算法引发的指针参数传递和引用的思考
最近想熟悉一下基本的数据结构和算法,于是写了一个二叉树程序,功能很简单,只有二叉树的建立和遍历。在这个过程中,却发现了一些平时没有注意到的细节问题,写出来作为总结和大家分享。 待讨论和遇到的细节问题如下:(1)常见的定式思维:指针作为参数传递,是否就不需要再赋值,因为指针指向的值会同步更改,但是,你有考虑过,如果指针变量本身的值被更改了呢?怎么办?(2)比较不常用的
2016-04-22 14:54:30 1898
转载 面试中的二叉树题
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。
2016-04-22 11:46:26 258
转载 轻松搞定二叉树中的面试题
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。
2016-04-22 11:43:14 250
原创 二级指针操作指针数组
分享到: 收藏+2踩顶0使用指针数组操作多个字符串,还可以通过二级指针变量的方式进行这种操作,首先定义一个字符串指针数组s,用来指向多个字符串常量,再定义一个二级指针变量p,使其指向数组s,因数组s中的每个元素都是数组,因此指针变量p必须定义为指向指针的指针(即二级指针)。#includeusing namespace std;i
2016-04-21 16:11:41 4057
转载 指针数组,数组指针,指针函数,函数指针
先看个简单的:char *p,这定义了一个指针,指针指向的数据类型是字符型,char *(p)定义了一个指针P;char *p[4], 为指针数组,由于[]的优先级高于*,所以p先和[]结合,p[]是一个数组,暂时把p[]看成是q,也就是char *(q),定义了一个指针q,只不过q是一个数组罢了,故定义了一个数组,数组里面的数据是char *的,所以数组里面的数据为指针类型。所以char
2016-04-21 15:02:59 251
转载 关于字符串函数strlen()
头文件:#include strlen()函数用来计算字符串的长度,其原型为:unsigned int strlen (char *s);【参数说明】s为指定的字符串。strlen()用来计算指定的字符串s 的长度,不包括结束字符"\0"。【返回值】返回字符串s 的字符数。/*First Example*/如果字符的个数等于字符数组的大小,那么s
2016-04-21 11:52:47 3951
转载 KMP算法
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上
2016-04-20 22:59:40 207
原创 进程与线程的区别
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分配的基本单位,线程自己基本不拥有系统资源,只拥有一点在运行中必不可少的资源(程序计数器,一组寄存器和栈),但是它可以与同属一个进程的其他的线程共享所拥有的全部资源。引入线程的优点:1..易于调度2.提高并发性3.开销小。创建线程比创建
2016-04-19 14:57:33 221
转载 TCP客户端服务器
一、实验目的学习和掌握Linux下的TCP服务器基本原理和基本编程方法,体会TCP与UDP编程的不同,UDP编程:http://blog.csdn.net/yueguanghaidao/article/details/7055985二、实验平台Linux操作系统三、实验内容编写Linux下TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,
2016-04-19 10:11:45 308
转载 网络编程
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是
2016-04-18 23:17:27 239
转载 图解数据结果-复杂度,动态数组和单链表
《数据结构》这门课是计算机专业的核心课程,但往往却让人头痛,因为比较抽象,当然了,也许你足够聪明,并不觉得它有多难,但对我而言,是有点难度,后来我仔细想了想,到底哪里难?我得出这么个结论:长篇大论,缺乏图表。现在的人都喜欢看电影,看电视剧,很少人还热衷于看小说吧,密密麻麻的文字不如一些图来得直观。另外,我们大多数人是做应用的,不是做研究的,所以我们只需要知道2+3=5,而不需要知道a+b=
2016-04-15 14:47:13 424
转载 互联网协议入门2
(接上文)七、一个小结先对前面的内容,做一个小结。我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:发送这个包,需要知道两个地址: * 对方的MAC地址 * 对方的IP地址有了这两个地址,数据包才能准确送到接收者手中。但是,前
2016-04-14 16:03:54 263
转载 互联网协议入门1
前言我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解
2016-04-14 16:02:20 258
转载 堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2016-04-14 15:58:08 176
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人