C/C++知识
chijianxingfeng
这个作者很懒,什么都没留下…
展开
-
继承与多态学习笔记
1.私有成员会被继承吗?类的私有成员一定存在,也一定被继承到派生类中,只不过受到C++语法的限制,在派生类中访问基类的私有成员只能通过间接的方式进行。 在派生类中可以通过调用基类的公有函数的方式间接的访问基类的私有成员,包括私有成员变量和私有成员函数。怎么访问类的私有成员?请看下面的程序.......#include using namespace std;class A原创 2013-04-29 22:38:28 · 729 阅读 · 0 评论 -
各种字符串以及它们之间的转换
字符串定义C-Style字符串:C程序语言本身原并不支援字串数据结构。字符串通常以一个字符数组(或称阵列)或一个指向字符资料的指标指标来表达。由于C语言的数组不包含其长度的资讯,故亦无法表示所载之字符串之长度。C语言社群对此通用之解决方案为于字符串末端增添一数值0的字符。C语言的标准程序库中的字符串处理功能亦以此为基础。C-Style 字符串特点为不直接包含长度资讯。要取得字符串之长度,就原创 2013-06-26 11:49:42 · 851 阅读 · 0 评论 -
printf用法详解
虽然C语言已经用了好多年,但是真正一些细微的东西还是要经常翻书才能记得清楚。在google叔叔上了找了几分钟没找到需要的知识,结果同事^_^在百度百科一下就找到了,嗯,看来评价一个东西还是要具体情况具体分析,不能妄下定论。printf()函数 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出 信息。在编写程序时经常会用到此函数。函数的原型为: i转载 2013-06-11 15:32:22 · 1101 阅读 · 0 评论 -
函数对象
函数对象\函数对象有三种类型:关系、逻辑、运算。为使用函数对象,应包含头文件。想了解C++中定义的函数对象,看这个链接:http://msdn.microsoft.com/zh-cn/library/vstudio/86ke4swd.aspx1.关系类型的函数对象:equal_to 测试是否相等not_equal_to 测试是否不相等原创 2013-05-06 11:26:45 · 645 阅读 · 0 评论 -
二进制文件的IO操作
二进制文件的IO操作习惯上,把非文本文件叫做二进制文件,实际上,所有的文件都是按照二进制存储 的。文本文件中存放的大部分是可见字符,加上少许控制字符;而二进制文件则可以包含任何字符和数据。二进制文件的输入输出不能用插入和提取操作符(>操作符)来实现,因为它们是为文本文件准备的。 对于二进制文件,必须使用read()和write()函数来读取和写入。创建一个二进制文件:ofstr原创 2013-05-03 15:59:49 · 2019 阅读 · 0 评论 -
获取文件信息
获取文件信息C++标准库提供了对文件内容处理的支持,但并不直接对文件基本信息的获取和修改。所以,获取文件的基本可以借助于C库中定义的结构和函数。在头文件中,定义了一个结构stat,它是用来描述文件元数据结构的。其定义如下:struct stat { _dev_t st_dev; _ino_t st_ino; uns原创 2013-05-03 14:42:58 · 789 阅读 · 0 评论 -
typename的用法
typename的用法很多人都会以为typename和class的作用是一样的,事实不然,typename还有另外一个用途:将某个带作用域的标识符显式地说明为类型,这在类型之间具有依赖关系的情况下是经常要用到的。不好理解,先看个例子再说:#include using namespace std;template class TypeClass{public: ty原创 2013-05-03 00:11:13 · 751 阅读 · 0 评论 -
bitset的用法
bitsetbitset是C++标准库提供的用于处理位集的类模板,所谓”位集“,就是指由0和1组成的有限长度的有序集,也称为“标志位”集合。使用bitset类,必须包含相关的头文件 #include using std::bitsetbitset有几种形式的构造函数,由于bitset是一个类模板,所以在使用bitset的时候,必须对其实例化。bitset类模板只带一个非类型参原创 2013-05-02 23:35:40 · 515 阅读 · 0 评论 -
输入输出迭代子的用法
输入输出迭代子可以将标准输入对象cin组装成输入流迭代子(istream_iterator),也可以将标准输出对象组装成输出流迭代子(ostream_iterator),以此来完成输入输出的操作。输入流迭代器:定义方法:istream_iterator 迭代器名(绑定的流); //可以先不绑定流例如:std::istream_iterator inputInt(cin);原创 2013-05-02 23:08:27 · 1070 阅读 · 0 评论 -
模板与标准模板库
模板参数模板参数分为类型参数和非类型参数。类型参数代表的是一个基本类型或用户自定义的类型,而非类型参数代表一个常量。每个参数前面都必须有关键字typename或者class,形式为或。一个模板的非类型参数为文字常量的例子:#include using namespace std;//T 是类型参数, Size是非类型参数template class Average{原创 2013-05-02 17:52:00 · 532 阅读 · 0 评论 -
流类库与输入输出
IO流输入输出(IO)是指计算机同任何外部设备之间的数据传递。数据可以按“记录”(或称“数据块”)的方式传递,也可以按“流”的方式传递。什么是记录?记录是指有着内部结构的数据块,记录内部除了有需要处理的实际数据之外,还可能包含附加信息,这些附加信息通常是对本记录数据的描述。什么是流? “流”是一种抽象概念,它代表了数据的“无结构化”传递。按流的方式进行输入输出,数据被当成无原创 2013-05-03 13:49:55 · 1096 阅读 · 0 评论 -
C++虚函数与动态联编
虚调用的几种具体情形虚调用是相对于实调用而言的,它的本质是动态联编(后面我们会讲到)。实调用:在发生函数调用的时候,如果函数的地址是在编译阶段确定的,就是实调用。反之,函数的入口地址要在运行时通过查询虚函数表的方式获得,就是虚调用。虚调用不能简单理解为"对虚函数的调用", 因为对虚函数的调用很可能是实调用。下面这个程序,对虚函数的调用就是实调用#include usi原创 2013-04-30 21:58:56 · 3228 阅读 · 0 评论 -
函数指针和操作符重载学习笔记
函数指针函数指针实际上代表一个函数在内存中的入口地址,要正确地定义一个函数指针,必须同时指明函数的返回值类型和函数的参数列表定义函数指针的形式: ReturnType (* pfunc) (var - list);ReturnType是指函数的返回值类型,pfunc则是函数指针,var-list是函数的参数列表。一个使用函数指针的例子:#include using n原创 2013-04-29 16:36:13 · 837 阅读 · 0 评论 -
使用宏定义内联汇编
使用宏定义内联汇编尽管一个宏可以分多行定义,但是在宏展开时时,被展开的的宏在源程序中仍然是被写在一行当中的。如果定义宏:#define GetAddress(ptr, function) _asm{\ mov eax, function\ mov ptr, eax\ }展开之后为:_asm{mov eax, function} mov ptr, eax}显然这样的内联原创 2013-04-29 12:15:50 · 2217 阅读 · 0 评论 -
所有C++操作符重载的例子
1.[ ]操作符重载C++语言规定:“[ ]”只能作为类的成员函数进行重载。 “[ ]”是C++中的下标运算符,对于数组或指针来说,下表运算的语义是确定的,不能进行重载。因此,如果看到一个运算结果不是数组或指针的表达式后跟“[ ]”运算符,一定是对“[ ]”进行了重载。一个例子:#include using namespace std;class A{ int num原创 2013-04-30 13:04:06 · 3555 阅读 · 0 评论 -
类的成员函数与外部函数的区别
类的成员函数与外部函数(静态函数)的区别在C语言中,所有的函数都是外部函数,而在C++中,从面向对象的角度来说,由于封装的作用,函数式属于某个类的。类的静态成员函数在调用特性上与外部函数相同,因外它不依赖于类的实例。 类的成员函数与外部函数(静态函数)的区别有以下几点:1.外部函数(静态函数)可以赋值给 void* 型指针,但类的非静态成员函数不行。如果类的非静态成员函数可原创 2013-04-29 21:29:10 · 2651 阅读 · 0 评论 -
C++11右值引用
C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。 对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值。左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。一个区分左值与右值的便捷方法是转载 2013-09-10 16:46:16 · 711 阅读 · 0 评论