首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 {
public: char *_pstr; int _size; CxString(int size) { ...
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_i...
一、list介绍:List由双向链表(doubly linked list)实现而成,元素也存放在堆中,每个元素都是放在一块内存中,他的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供[]操作符的重载。但是由于链表的特点,它可以很有效率的支持任意地方的插入和删除操作。二、用法1、头文件#include <list>
//list属于std命名域的,因此需要通过命名限定,例如using std::list;2、定...
程序在内存有五个存在区域:A:动态区域中的栈区 B:动态区域中的栈区C:静态区域中:全局变量 和静态变量 (这个区域又可以进一步细分为:初始化的全局变量和静态变量 以及 未初始化的全局变量和静态变量 )D:静态区域中:文字 数字 常量E:静态区域中:代码区(就是编译后的二进制代码 指导CPU怎么运行的玩意)×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××栈,程序运行的时候 需要就...
开始刷《C++Primer》这本书,会在博客上更新课后习题。水平有限,如有有误之处,希望大家不吝指教!不断学习中,欢迎交流!第一二章课后题练习1.3#include<iostream>
int main(){std::cout<<"Hello world"<<std::endl;return 0;
}练习1.4#include<iostream>
int main(){std::cout << "Input two numbers: " << std::endl;int a, b;std::cin >> a >> b;std::cout << a <<" * "<< b << " = " << a * b << std::endl;
}练习1.5#includ...
什么是容器首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对 象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处, 就是“容器类是一种对特定代码重用问题的良好的解决方案”。容器还...
部分内容转载:http://blog.csdn.net/kingstar158/article/details/6859379 感谢追求执着,原本想自己写,却发现了这么明白的文章。C++文件流操作是基础内容之一,但是内容繁杂,其实会者不难,这里简单概述一下:需要调用的类:#include<fstream> 读入/输出有两种方法,第一种是流的方法。读入:ifstream file("InterestSettings.dat");
if (file)
{while (!file.eof()){file >> alive >> threemonth >> halfyear >> oneyear >> t...
最近在写哈夫曼压缩,遇到了一个比较让人头疼的问题,那就是对文件的读写操作,尤其是以二进制的形式来读写,无奈C++Primer第五版上写的并不详细,很多让人困惑的地方没有涉及或者没有讲清楚。于是这几天我一直在网上看了很多这方面相关的文章,觉得理解了不少,很多困惑也迎刃而解。我们都知道,C语言里面对文件的操作是通过文件指针,以及一些相关的函数,那么C++中是如何对文件进行操作的呢?没错,就是通过 fstream 这个文件流...
编译与链接有四个过程:(1)预处理(2)编译(3)汇编(4)链接 (1)预处理源文件和头文件被预处理成一个.i文件、(-E表示只进行预处理)g++ -E hello.cpp -o hello.i-E:意味着只执行到预编译,直接输出预编译结果。预处理过程主要处理那些源文件中的以“#”开始的预编译指令。包括#include,#define, #if,等等。主要的处理规则如下:(1)将所有的#define删除,并且展开所有的宏。如#define a b 就是将所有的a替换成b。...
Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Base的print函数。这是面向对象中的多态性的体现。(关于虚拟机制是如何实现的,参见Inside...
第一篇:typedef
struct与struct的区别1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2. typedef & 结构的问题当用下面的代码定义一...
一.解释: vector(向量):是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。二.用法: 1.头文件#include <vector> 2.定义方式a) vector<int>v1;//vector元素为 int 型
b) vector<string>v2;// vector元...
C++编写贪吃蛇小游戏快速入门刚学完C++。一时兴起,就花几天时间手动做了个贪吃蛇,后来觉得不过瘾,于是又加入了AI功能。希望大家Enjoy It.效果图示AI模式演示整体规划+原理大体上可以分为图上所示的几个类。不过……怎么看都有点强行面向对象的味道在里面。。[哭笑][哭笑][哭笑]。不管了……代码写得可能有点凌乱,下面我会为大家一一讲解。整个程序设计的原理就是:主函数死循环,不断刷新打印贪吃蛇和食物。这样每循环一次,就...
一、什么是字节对齐,为什么要对齐?
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特
定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。
对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址...
一、概述 ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过 OLE DB提供者对在数据库服务器中的数据进行访问和操作的应用程序。ADO同OLE DB、数据库之间的关系可以用下图来表示: 其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO支持用于建立基于客户端/服务器和 Web的应用程序的主要功能。 二、ADO初步认识 在此介绍的ADO编...