C++成员函数实现操作符重载
使用情况:通常对类本身的运算符重载 如类nameclass的运算符函数名称operator op 如x,y都是类nameclass的生成的对象,如果重载并实现了operator op 我们可以做这样的计算x op y,编译器会自动翻译成如下x.operator op(y) 如op是重载的运算符是加法(+),那么可变成x+y,编译器会变成x.operator+(y) 计算顺序是: x op y变成x=x op y,运算结果存入到x, x.operator+(y) 第一个操作数是类的对象x,也就是隐含的对象指...
C++中使用虚函数实现的多态
首先来说一说虚函数,所谓虚函数是这样一个概念:基类中有这么一些函数,这些函数允许在派生类中其实现可以和基类的不一样。在C++中用关键字virtual来表示一个函数是虚函数。 C++中还有一个术语 “覆盖”与虚函数关系密切。所谓覆盖就是说,派生类中的一个函数的声明,与基类中某一个函数的声明一模一样,包括返回值,函数名,参数个数,参数类型,参数次序都不能有差异。(注1)说覆盖和虚函数关系密切的原因有两个:一个原因是,只有覆盖基类的虚函数才是安全的。第二个原因是,要想实现基于虚函数的多态就必须在派生类中覆盖基...
C++中使用模板函数实现的多态
所谓模板函数(也有人叫函数模板)是这样一个概念:函数的内容有了,但函数的参数类型却是待定的(注意:参数个数不是待定的)。比如说一个(准确的说是一类或一群)函数带有两个参数,它的功能是返回其中的大值。这样的函数用模板函数来实现是适合不过的了。如下。 template typename T T getMax(T arg1, T arg2) { return arg1 arg2 ? arg1:arg2; //代码段1 } 这就是基于模板的多态吗?不是。因为现在我们不论是调用getMax(1, 2)还是调用ge...
细说用函数重载实现的多态
函数重载是这样一种机制:允许有不同参数的函数有相同的名字。 具体一点讲就是:假如有如下三个函数: void test(int arg){} //函数1 void test(char arg){} //函数2 void test(int arg1,int arg2){} //函数3 如果在C中编译,将会得到一个名字冲突的错误而不能编译通过。在C++中这样做是合法的。可是当我们调用test的时候到底是会调用上面三个函数中的哪一个呢?这要依据你在调用时给的出的参数来决定。如下: test(5); //调用函数...
C++中的向上类型转换和向下类型转换
在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分别描述的是子类向基类,和基类向子类的强制类型转换。 向上强制类型转换 切割:覆盖方法和子类数据丢失的现象生成切割(slice) class Base { public: int b; virtual void Test() { cout \"base\" endl; } }; class Derived:public Base { public: int d; virtual void Test() { cout \"derived\" en...
详解C++中的Smart Pointer
Smart Pointer是C++中的一个大题目,要说清楚他的所有好处很需要费点力气。我就一个功能一个功能的说。有我理解不透的地方希望大家指点。 1.copy-to-write 当生成一个C++ object的时候如果这个class...
C++拓扑排序程序
//拓扑排序 #include stdio.h #include stdio.h #define MAX_VERTEX_NUM 50 #define STACK_SIZE 50 typedef struct ArcNode{ int adjvex; //顶点在数组中的位置 struct ArcNode *nextarc; //下一条弧的指针 }ArcNode;//邻接表结点 typedef struct VNode{ int data; //顶点信息 ArcNode *firstarc;//第一条依附该定...
Rsync使用关于文件处理的命令介绍
Rsync 使用数据备份完成后该操作会自行终止。对于此,最好是在上述命令的基础上再添加一个“-a”选项(对于文件)和“-e”选 项,指定使用远程的shell程序,以保障安全。此时,远端的shell将使用一个加密协议,比如ssh,以便远程的shell可以使用-e ssh格式。 这 样,上述Rsync 使用命令就有了ssh加密协议的保护,具体形式如下: rsync -a -e ssh localdir host:remotedir 如果想了解整个文件拷贝过程中所发生的一切,可以使用-v和-progress选...
Linux查看磁盘空间实现代码介绍
在windows下可以很方便的查看磁盘空间的。但是到了Linux查看磁盘空间,你可能就有点摸不着头脑了,呵呵。不要急,我这就要给你解决这个问题。 Df命令是Linux查看磁盘空间系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息,命令格式: df -hl Linux查看磁盘空间 显示格式为: 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% / /dev/h...
Linux系统管理员基本常识
1 SSH (1) $ ssh -XC user@myserver ssh:安全套结字远程登录 参数: 1 -X: 启用图形化X11 2 -C: 请求的数据全部压缩(compress) (2) 常见问题和解决方案 如果目标主机myserver的IP改了,而导致无法登陆远程主机,可以使用如下命令来修改IP $ vi /home/user/.ssh/known_hosts 2 Find (1) $ find / -iname '*java*' -exec chmod 755 {} \; -print 从根/...
深入浅出了解Linux操作系统
关于经常学习计算机的人,一定格外非常了解微软,微软这个庞然大物,压得很多开源社区喘不过起来,不过,有压迫就有反抗。于是Linux操作系统就慎重登场了,你了解Linux操作系统么?知道它的历史么?这里为你讲解: 那么什么是Linux呢? Linux有两种不 同的含义。从严格的技术定义讲,Linux指的是开放源代码的Unix类操作系统的内核。然而,目前大多数人用它来表示以Linux内核为基础的整个操作 系统。从这种意义讲,Linux指的是开放源代码的,包含内核、系统工具、完全的开发环境和应用的Unix类操作...
基于Linux的Subversion配置
花了一个下午时间学习整理了Subversion的配置,经测试可以正常使用。 一.安装 yum install subversion 二.配置 本系统采用为每个项目单独建一版本库的策略。配置文件,密码文件,访问控制文件等都放在版本库的conf目录下。 所以每次开始一个新项目都必须新建一个版本库,并重新配置各配置文件。还有很重要的一条,要求各组员重新配置客户端,包括服务器版本库路径,本地路径等信息。 1. 建立版本库目录(可建立多个,新建库后以下各项都需重新配置。注意区别安装目录与版本库目录,以下讲的都是版...