C++
文章平均质量分 70
这题我会啊
人工智能基本人工
展开
-
C++----局部静态对象和函数
局部静态对象某些时候,有必要令局部变量的生命周期贯穿函数调用之后的时间。可以将局部变量定义成static类型从而获得这样的对象。局部静态对象(local static object)在程序的执行路径第一次经过对象定义语句是初始化,并且直到程序终止才被销毁,在此期间及时对象所在的函数结束执行也不会对它有影响。 举个例子,下面的函数统计它自己被调用了多少次:size_t count_calls(){原创 2017-05-24 15:59:01 · 1719 阅读 · 0 评论 -
C++中static和const
static静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。全局变量整个工程可见,而加上static则变成文件内可见。更改生存期void fun(){ static int count = 0; cout << count++<<endl;}类中静态成员static修饰的成员表明成员属于类,而不是对象。默认初始化因为全局变量和static变量都原创 2017-09-04 17:22:35 · 331 阅读 · 0 评论 -
C++----范型算法
算法永远不会执行容器的操作泛型算法本身不会执行容器的操作,它们只会运行于迭代器上,执行迭代器的操作。泛型算法运行于迭代器智商而不会执行容器操作的特性带来了一个令人惊讶但非常必要的编程假定:算法永远不会改变底层容器的大小。算法可能改变容器中保存的原始的值,也可能子啊容器内移动元素,但永远不会直接添加或删除元素。初识除了少数例外,标准库算法都对一个范围内的元素进行操作。我们将此元素范围成为“输入范围”。原创 2017-06-27 19:31:11 · 503 阅读 · 0 评论 -
C++----关联容器
关联容器概述关联容器(有序和无序的)不支持顺序容器的位置相关的操作,例如push_front或push_back。原因是关联容器中元素是根据关键字存储的,这些操作对关联容器没有意义。而且,关联容器也不支持构造函数或插入操作这些接受一个元素值和一个数量值的操作。 关联容器的迭代器都是双向的关键字类型的要求map的第一个元素是关键字,而set只有一个元素亦是关键字。关联容器对其关键字类型有一些限制。对原创 2017-07-04 15:53:58 · 372 阅读 · 0 评论 -
[C][C++]长度、大小等的详解:sizeof, strlen, size...
转自这儿sizeof返回类型、变量的大小,单位是byte(字节,8位)strlen返回C Style的长度虽然看似清晰明了,实际还是有很多细节需要注意的1. 字符串:字符串有两种:C 类型的以及C++ 类型的1.1. C 类型字符串C Style的其实就是char *或者char[]类型。1.1.1. char *类型字符串有以下定义形式:转载 2017-06-12 15:19:18 · 745 阅读 · 0 评论 -
C++----动态内存
除了自动和static对象外,C++还支持动态分配内存对象。动态分配的对象的生存期与它们在哪里创建时无关的,只有当显示地被释放时,这些对象才会销毁。 动态对象的正确释放被证明是编程中及其容易出错的地方。为了更安全地使用动态对象,标准库定义了两个智能指针类型来管理动态分配的对象。当一个对象应该被释放时,指向它的智能指针可以确保自动地释放它。 为了更容易(同时也更安全)地使用动态内存,新的标准库提供原创 2017-07-10 17:06:17 · 421 阅读 · 0 评论 -
C++----IO类
为了支持不同的IO处理操作,C++定义了一系列IO类型,如下表 头文件 类型 iostream istream,从流读取数据; ostream,向流写入数据; iostream,读写流 fstream ifstream,从文件读取数据; ofstream,向文件写入数据; fstream,读写文件 sstream istringstre原创 2017-06-20 10:30:49 · 536 阅读 · 0 评论 -
C++----语句
for语句头中的多重定义和其他声明一样,init-statement也可以定义多个对象。但是init-statement只能有一条声明语句,因此,所以变量的基础类型必须相同。for(int i = 0, j = 0;i < 100; i++){ j = i+j;}函数在寻找处理代码的过程中退出在复杂系统中程序在遇到抛出异常的代码前,其执行路径可能已经经过了多个try语句块。例如,一个try原创 2017-05-18 17:22:07 · 354 阅读 · 0 评论 -
C++----函数&函数指针
默认实参初始值局部变量不能作为默认实参。 作为默认实参的名字在函数声明所在的作用于内解析,而这些名字的求值过程发生在函数调用时:sz wd = 80;char def = '';sz ht();string screen(sz = ht(), sz = wd, char = def);string window = screen(); //调用screen(ht,80,'')用作默认原创 2017-05-27 17:17:20 · 442 阅读 · 0 评论 -
C++----表达式
求值顺序运算对象的求值顺序与优先级和集合率无关,在一条形如f()+g()*h()+j()的表达式中:优先级规定,g()的返回值和h()的返回值相乘结合律规定,f()的返回值先与g()和h()的乘积相加,所得结果再与j()的返回值相加对于这些函数的调用顺序没有明确规定 所以如果这几个函数影响同一对象,则它是一条错误的表达式,将产生未定义的行为。C++中只有4种运算符明确规定了运算对象的求值顺原创 2017-05-17 14:57:24 · 409 阅读 · 0 评论 -
C++----声明、定义、const限定符
声明和定义为了支持分离式编译,C++语言将声明和定义区分开来。声明使得名字为程序所知,一个文件如果想使得用别处定义的名字则必须要喊对那个名字的声明。而定义负责创建与名字相关联的实体。变量声明规定了变量的类型和名字,这一点定义与之相同;但是,定义还申请了存储空间,也可能为变量赋图个初始值。 如果想要声明一个变量而非定义它,就在变量名前加关键字 extern extern int i;//声明i而非定原创 2017-05-15 21:46:08 · 981 阅读 · 0 评论 -
C++ 函数参数传递
值 传递当初始化一个非引用类型的变量时,初始值被拷贝给变量。此时,对变量的改动不会影响初始值:int n = 0;int i = n;u = 42; //i的值改变,n的值不会变函数传值参数的机理完全一样。函数对形参做的所有操作都不会影响到实参。指针 传递拷贝的是指针的值,拷贝之后,两个指针是不同的指针。void reset(int *ip){ *ip = 0; //改变了指针ip所指原创 2017-10-07 13:56:27 · 411 阅读 · 0 评论