![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CPlusPlus
文章平均质量分 72
dream2009gd
这个作者很懒,什么都没留下…
展开
-
C++中const的使用
1. const string* p和String * constp助记方法:* 读成 pointer to ,倒着读const string* pconst 在 * 左边,说明定义的是指向string常量的指针,p指针可以改变,但是原来指向的string不能变倒着读:p a const pointer to stringstring const * p; //因为没有cons原创 2013-01-15 18:27:58 · 574 阅读 · 0 评论 -
字符串流stringstream
示例代码:需要头文件 ifstream infile(m_simFilePath.c_str()); //m_simFilePath是相似度矩阵所在的文件路径(成员变量) if(!infile) //通过string类成员函数c_str()把string转换成c中的字符串样式:constchar*,infile函数的参数为const char*,'.c_str()'转化后原创 2013-01-15 18:26:53 · 1241 阅读 · 0 评论 -
C++读写文件
示例1.写文件#include #include using namespace std;void main(){ofstream in; //如需自动创建文件,这里必须指明是ofstreamin.open("com.txt",ios::trunc); //ios::trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建//ofstream in原创 2013-01-15 18:26:50 · 388 阅读 · 0 评论 -
C++中引用&与取地址&的区别
简单来说,一个是用来传值的 一个是用来获取首地址的&(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用.例如: int &rf; // 声明一个int型的引用rf.&(取地址运算符)==>在给变量赋初值时出现在等号右边,或在执行语句中作为一元运算符出现时,表示取对象的地址.在C++中,既有引用又有取地址,好多人对引用和取地址不是很清楚,因此也无法区分。其实他们的区别原创 2013-04-02 22:33:08 · 1999 阅读 · 0 评论 -
虚函数与纯虚函数
(1)虚函数使用关键字virtual,定义虚函数。作用:启用动态绑定。编写程序时能使用继承层次中任意类型的对象,无需关心对象的具体类型(狮子还是老虎),也无需关心函数是在基类中定义还是在某一派生类中定义的。定义为virtual的函数是基类期待派生类重新定义的。语法:virtual 函数返回类型 函数名(参数表) { 函数体 } -----------------原创 2013-04-09 17:17:56 · 780 阅读 · 0 评论 -
class与struct的区别总结
class与struct的区别:(1)定义类时,默认的初始访问级别不同。使用class定义类,定义在第一个访问标号(public、protected、private)之前的任何成员都隐式指定为private;而如果使用struct关键字,那么定义在第一个访问标号之前的任何成员都默认指定为public。(2)定义派生类时,继承级别不同。使用class关键字定义的派生类默认具有priv原创 2013-04-08 15:19:13 · 1179 阅读 · 7 评论 -
C++内联函数inline
简单来说:inline类似于宏定义define,但又消除了它的缺点,继承了它的优点。内联函数和宏的差别是什么?答案:(1)内联函数常驻内存,和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。而宏只是一个简单的替换。(2)内联函数要做参数类型检查,这是内联函数跟宏相比的优势。(3)inline是指嵌入代码,就是在调用函数原创 2013-03-28 18:53:59 · 835 阅读 · 3 评论 -
中文编码方式总结
ASCII-----单字节编码ASCII 码是使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。 ASCII 编码可以表示的最大字符数年是 256,其实英文字符并没有那么多,一般只用前 128 个(最高位为了0),其中包括了控制字符、数字、大小写字母和其他一些符号。而最高为1 的另128 个字符为“扩展ACSII”。128 个字符,其中0x00~0x1F(0~31)原创 2013-04-26 16:19:43 · 1524 阅读 · 2 评论 -
malloc和new的区别
Malloc:Malloc 向系统申请分配指定size个字节的内存空间.返回类型是 void* 类型.void* 表示未确定类型的指针.C,C++规定,void* 类型可以强制转换为任何其它类型的指针.原型:extern void *malloc(unsigned int num_bytes);头文件:malloc.h或者stdlib.h、cstdlib。功能:分配长度原创 2013-05-01 19:34:32 · 1064 阅读 · 2 评论 -
C++动态分配二维数组
动态分配二维数组:double** geneMatrix(int a,int b){ double** matrix=new double*[a]; //指针是指针,得分配内存和初始化才是数组!!! for(int i=0;i<a;i++) { matrix[i]=new double [b]; } srand(unsigned(time(0))); f原创 2013-01-15 18:26:59 · 443 阅读 · 0 评论 -
C++编译多个文件makefile
逐步编译:g++ -c APCluster.cppAPCluster.h //生成APCluster.o 中间文件g++ -c example.cppAPCluster.h //生成example.o中间文件g++ -o main APCluster.o example.omakefile:GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,上面编译对应的m原创 2013-01-15 18:27:01 · 1606 阅读 · 0 评论 -
打开文件夹下所有文件(递归)
//遍历目录下所有文件,并将文件名返回list列表#include //必须有int walk_dir(const char *path,list &file_list){ struct dirent *ent = NULL; DIR *pdir; string temp = "",path_str = path; if(path_str[path_str.size()原创 2013-01-15 18:27:14 · 378 阅读 · 0 评论 -
C++中函数传参相关问题
函数形参的问题:铭记一条----传参最好传引用,指针或者迭代器引用:c程序员习惯传递指针实现对实参的访问,比如swap函数,但c++程序员一般会使用引用!引用的好处:避免复制!应该将不需要修改的引用形参定义为const引用,普通的非const引用形参在使用时不太灵活,不可以用const对象初始化,比如“afasdf”不能初始化string&型的形参;通常,函数不应该有vec原创 2013-01-15 18:27:56 · 582 阅读 · 0 评论 -
C/C++代码命名和格式规范
——————————————————————————————————————————命名命名,包括文件名、类名、结构名、类型名、函数名、变量名、参数名等都是程序设计中重要的一部分。一个好的名称,体现了一个深思熟虑的过程,同时也能够帮助别人更好地理解开发者的思路。如果发现程序中,充满了a, b, c, x, y, z,tmp这种命名的变量,这时候就需要仔细的考虑自己的实现是否有问题。原创 2013-01-15 18:28:00 · 2156 阅读 · 0 评论 -
C++基本知识
原文地址:C++基本知识作者:潴O潴C++基本知识(一)基本内置类型:C++本身定义的类型字节=byte字=word8位=1个字节4个字节=1个字一、初始化1.初始化与赋值是两种不同的操作:初始化是指创建对象并给它赋初始值,而赋值是指擦除对象的当前值并用新值代替2.复制初始化用=,而直接初始化用(),直接初始化比复制初始化更有效率例:int a(1); //直接初始化i转载 2013-01-15 18:27:06 · 294 阅读 · 0 评论 -
vector与迭代器和数组与指针
原文地址:vector与迭代器和数组与指针作者:潴O潴C++基础知识(二) ——vector类型与迭代器和数组类型与指针vector类型与数组类型比较vector类型长度是动态的,可以根据需要动态的调用push_back函数添加新的元素,而数组的长度是固定的;数组没有获取数组大小的函数,而vector类型提供size函数能够方便的获取容转载 2013-01-15 18:27:08 · 1428 阅读 · 0 评论 -
c++中的static
面向过程的static静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的分布情况如下图: 代码区 //low address 全局数据区 堆区 栈区 //high address 一般程序把新产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部原创 2013-01-15 18:27:45 · 419 阅读 · 0 评论 -
容器常用函数、algorithm头文件
偶然发现有个头文件,对于容器操作很有用处,摘要如下:iset.insert(ivector.begin(),ivector.end()) //复制vector元素到set中,注意这个操作会去重string str = join(vector," "); //vector拼接成一个stringThe header definesa collec原创 2013-01-15 18:27:36 · 533 阅读 · 0 评论 -
string和int之间的转换
(1)int转换为字符串用字符串流实现int to strstring int2str(int num) // int to str{ stringstream ss; ss<<num; string str; ss>>str; return str;}itoa函数:char* itoa (int value, char* str, int base原创 2013-01-15 18:27:34 · 438 阅读 · 0 评论 -
gdb常用命令
调用gdb编译需要在cc后面加 -g参数再加-o;[root@redhat home]#gdb 调试文件:启动gdb(gdb) l :(字母l)从第一行开始列出源码(gdb) break n :在第n行处设置断点(gdb) break func:在函数func()的入口处设置断点(gdb) info break: 查看断点信息(gdb) r:运行程序(gdb) n:单步原创 2013-01-15 18:27:30 · 416 阅读 · 0 评论 -
抽象基类Shape及派生类Circle、Rectangle和Triangle的实现
【题目】写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形)。用如下的mian()函数,求出定义的几个几何体的面积和。int main(){ Circle c1(12.6),c2(4.9); //建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5转载 2013-06-03 09:53:12 · 6301 阅读 · 0 评论