随笔分类 -  C/C++

摘要:今天在阅读《google c++ 编程风格》的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意:对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理由是 前置自增 (++i) 通常要比后置自增 (i++) 效率更高。于是我查了查前置++和后置++的区别。注意:《... 阅读全文
posted @ 2015-08-17 11:40 balingybj 阅读(2690) 评论(0) 推荐(0)
摘要:在C++中,可以为参数指定默认值。在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数。默认参数的语法与使用:(1)在函数声明或定义时,直接对参数赋值。这就是默认参数;(2)在函数调用时,省略部分或全部参数。这时可以用默认参数来代替。注意:(1)默认参数只可在函数声明中设定一次。只有在没有... 阅读全文
posted @ 2015-08-16 09:42 balingybj 阅读(3620) 评论(0) 推荐(1)
摘要:在C++中对象要在使用前初始化,永远在使用对象之前先将它初始化。1.对于无任何成员的内置类型,必须手工完成此事。例如: int x=0;double d; std::cin>>d; 2.内置对象以外的东西,初始化责任落在构造函数身上。确保每一个构造函数都将对象的每一个成员初始化。 例如: class... 阅读全文
posted @ 2015-08-15 11:29 balingybj 阅读(846) 评论(0) 推荐(0)
摘要:1.你的类需要一个构造函数吗 需要构造函数来隐藏类的内部工作方式。2.你的数据成员是私有的吗 通常使用公有的数据成员不是什么好事,因为类设计者无法控制何时访问这些成员。3.你的类需要一个无参的构造函数吗 为了可生成对象数组或类的对象不必显示的初始化类的构造函数,必须显示地写一个无参的构造函数。4.是... 阅读全文
posted @ 2015-08-15 11:26 balingybj 阅读(251) 评论(0) 推荐(0)
摘要:这个问题属于非常初级的问题,但是对于初学不知道的人可能会比较头疼。C++中函数是不能直接返回一个数组的,但是数组其实就是指针,所以可以让函数返回指针来实现。比如一个矩阵相乘的函数,很容易地我们就写成:#include using namespace std;float* MultMatrix(flo... 阅读全文
posted @ 2015-08-15 11:20 balingybj 阅读(1519) 评论(1) 推荐(0)
摘要:编写C++中的两个类 一个只能在栈中分配空间 一个只能在堆中分配。 解答:(1)代码如下#include using namespace std; //只能在堆上分配内存 class HeapOnly { public: HeapOnly() { co... 阅读全文
posted @ 2015-08-15 11:08 balingybj 阅读(737) 评论(0) 推荐(0)
摘要:一.C语言中的const const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。 (1)用const修饰一般变量 注意在C语言中,用const修饰的变量必须在声明时进行初始化(用来修饰函数的形参除外); 如: const int n; 这种声明方式是错误的 const int 阅读全文
posted @ 2015-08-15 09:13 balingybj
摘要:1.从概念上区分:复制构造函数是构造函数,而赋值操作符属于操作符重载范畴,它通常是类的成员函数2.从原型上来区分:复制构造函数原型ClassType(const ClassType &);无返回值赋值操作符原型ClassType& operator=(const ClassType &);返回值为C... 阅读全文
posted @ 2015-08-15 08:46 balingybj 阅读(5729) 评论(3) 推荐(0)
摘要:1.模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,i... 阅读全文
posted @ 2015-08-14 23:37 balingybj 阅读(579) 评论(0) 推荐(0)
摘要:对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include using namespace std;class CExample {private: ... 阅读全文
posted @ 2015-08-14 23:17 balingybj 阅读(341) 评论(0) 推荐(0)
摘要:实现1:《高质量c++,c编程指南》 缺点:没有考虑内存重叠的情况,可以加一个断言换为:assert(des>=src+num||src>dst+num); 缺点:没有考虑内存重叠的情况,可以加一个断言换为:assert(des>=src+num||src>dst+num); 缺点:没有考虑内存重叠 阅读全文
posted @ 2015-08-14 23:02 balingybj 阅读(2968) 评论(0) 推荐(0)
摘要:realloc()函数原型:extern void *realloc(void *mem_address, unsigned int newsize);语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。头文件:#include 有些编译器需要#include ,在TC... 阅读全文
posted @ 2015-08-14 22:49 balingybj 阅读(528) 评论(0) 推荐(0)
摘要:1基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a,... 阅读全文
posted @ 2015-08-14 22:22 balingybj 阅读(428) 评论(0) 推荐(0)
摘要:C 中大多数缓冲区溢出问题可以直接追溯到标准 C 库。最有害的罪魁祸首是不进行自变量检查的、有问题的字符串操作(strcpy、strcat、sprintf 和 gets)。一般来讲,象“避免使用 strcpy()”和“永远不使用 gets()”这样严格的规则接近于这个要求。 今天,编写的程序仍然利用... 阅读全文
posted @ 2015-08-14 18:00 balingybj 阅读(3103) 评论(0) 推荐(0)
摘要:引用的概念引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; 如下:定义引用ra,它是变量a的引用,即别名。 int a; int &ra=a; (1)&在此不是求地址运算符,而是起标识作用。 (2)类型标... 阅读全文
posted @ 2015-08-13 23:14 balingybj 阅读(514) 评论(0) 推荐(0)
摘要:前言: 在开发中,很多时候需要知道各个函数或者是某些设备对命令的操作用时,因此需要用到gettimeofday 来获取当前时钟。一,函数说明#includeint gettimeofday(struct timeval *tv, struct timezone *tz);注意:1.精确级别,微妙级... 阅读全文
posted @ 2015-08-12 22:14 balingybj 阅读(5651) 评论(0) 推荐(0)
摘要:在学习c++ STL的时候,整天碰到迭代器,也整天用,但是,到底它是个什么东西,很多人没有一个认识。这里我通过几个小的DEMO,来看看迭代器。首先我实现了一个十分简陋的vector类: 1 template 2 class vector { 3 private: 4 T* p... 阅读全文
posted @ 2015-08-07 22:39 balingybj 阅读(493) 评论(0) 推荐(0)
摘要:迭代器迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为他们一定具有地址值。例如,一个数组索引,也可以认为是一种迭代器。迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一... 阅读全文
posted @ 2015-08-07 22:35 balingybj 阅读(1063) 评论(0) 推荐(0)
摘要:转载自:http://www.builder.com.cn/2008/0104/696370.shtml“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动... 阅读全文
posted @ 2015-08-02 09:12 balingybj 阅读(266) 评论(0) 推荐(0)
摘要:1. new与operator newC++中有很多语法让人难以理解,如:new operator(操作符,下同)和operator new之间差异,确切的说,应该是new与operator new 的区别。1.1 new operator如下代码:string *ps=new string("me... 阅读全文
posted @ 2015-08-02 09:11 balingybj 阅读(345) 评论(0) 推荐(0)