![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++编程
neuqzxy
这个作者很懒,什么都没留下…
展开
-
C++ tm 和 time_t 有关总结
C++ tm 和 time_t 有关总结标签: tmtime_tdifftimemktimelocaltime2016-08-16 11:00 515人阅读 评论(0) 收藏 举报 分类:C / C++(45) 版权声明:本文为博主原创文章,未经博主同意可以随意转载。【分解时间 & 日历时间】在标准C/C++中,我们可转载 2017-01-04 10:35:46 · 379 阅读 · 0 评论 -
类型转换及范围易错点(unsigned)
1:当把一个整数值赋给浮点数时,小数部分记为0,。如果该整数所占的空间超过了浮点类型的容量,精度可能有损失。2:当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数总数的余数。3:当我们赋给带符号类型一个超过它的表示范围的值时,结果是未定义的,此时,程序可能继续工作,可能崩溃,也可能生成垃圾数据。原创 2017-01-16 12:01:22 · 439 阅读 · 0 评论 -
关于自增自减
#includeusing namespace std;int main(){ int i=4; while(--i) cout<<i; return 0;} 结果为321.#includeusing namespace std;int main(){ int i=4; while(i--) cout<<i; return 0;} 结果为3210一直原创 2017-01-16 11:25:57 · 258 阅读 · 0 评论 -
数组易错点
char o[2]='v';错char o[2]="v";对char o[]="v";对char o[1]="v";错char o[3]={'v','v','v'};对二维数组初始化时,如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维长度不能省。但是:char o[][3]={{'v','v','v'},{'v',原创 2017-01-10 10:13:59 · 496 阅读 · 0 评论 -
类的继承与派生中关于构造函数
单继承:一个派生类只从一个基类派生。多重继承:一个派生类有两个和多个基类。在目前的C++标准中,派生类把基类全部的成员(不包括构造函数和析构函数)接收过来,也就是说是没有选择的,不能说选择接受一部分成员,而舍弃另一部分成员。此外,可以在派生类中声明一个与基类成员同名的成员,但应注意:如果是成员函数,不仅应使函数名相同,而且函数的参数列表(参数的个数和类型)也应相同,如何不相同,就成为函原创 2017-01-09 17:15:49 · 1027 阅读 · 0 评论 -
在C++中子类继承和调用父类的构造函数方法
构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。构造原则如下:转载 2017-01-09 15:17:35 · 454 阅读 · 0 评论 -
关于使用指针的发散
先回顾下指针:在程序中一般是通过变量名来对内存单元进行存取操作的。其实程序经过编译以后已经将变量名转换为变量的地址了,对变量值的存取都是通过地址进行的。所以可以通过指针间接访问。在数组指针中(指向数组的指针),如果指针变量指向数组中的一个元素,则p+1指向同一数组的下一个元素。a[i]==*(a+i)==*(p+i)使用a[i]和*(a+i)的执行效率是一样的,C++编译系统就原创 2017-01-08 20:48:20 · 309 阅读 · 0 评论 -
C++中构造函数
一般情况下构造函数不需要被用户调用,也不能被用户调用。构造函数是在定义对象时由系统自动执行,而且只能执行一次。在全局范围内定义对象,(即在所有函数之外定义对象),那么它的构造函数在本文件模块中的所有函数(包括main函数)执行前调用。在函数中定义局部自动对象,则在建立对象时调用其构造函数,如果所在函数被多次调用,那么每次调用时都调用构造函数。如果在函数中定义静态局部对象,则只在程序原创 2017-01-08 10:52:28 · 454 阅读 · 0 评论 -
C++中构造函数的执行顺序
上篇文章写了:Java中构造方法的执行顺序,这次是C++中构造函数的执行顺序。经测试按照如下顺序:一、先执行静态成员的构造函数,如果静态成员只是在类定义中声明了,而没有实现,是不用构造的。必须初始化后才执行其构造函数。二、任何抽象基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)三、任何虚拟基类的构造函数按照它们被继承的顺序构造(不是初始化列表转载 2017-01-08 09:47:33 · 597 阅读 · 0 评论 -
类的成员函数的存储方式
#includeusing namespace std;class box{ public: void display() { cout<<length*width*height; } private: int length; int width; int height;};int main(){ box box1; cout<<sizeof(box1); //原创 2017-01-06 15:21:40 · 940 阅读 · 0 评论 -
关于内置函数的发散思考
为什么C++要引入内置函数?因为调用函数需要时间和空间开销,下面解释一下函数调用的过程:1:程序先执行函数调用前的语句(注意,这里不一定是main函数部分,也可能是其他函数)。2:流程的控制转移到被调函数的入口处,同时进行参数传递。3:执行被调函数的函数体的语句。4:流程返回主调函数的下一条指令处,将函数的返回值带回。5:继续执行主调函数未执行的部分。为什么需要大量的时间和原创 2017-01-06 10:32:40 · 398 阅读 · 0 评论 -
关于友元函数
#includeusing namespace std;class Time;class data{ public: void display(Time &); data(int y,int m,int d):year(y),month(m),day(d){} ~data(){} private: int year; int month; int day;};class原创 2017-01-05 20:42:18 · 351 阅读 · 0 评论 -
关于模板
暂时学到函数模板和类模板,总结一下。都包含了template意思是“模板”,或者,其中typename和class都是表示“类型名”二者可以互换,这个在函数模板和类模板中都是一样的,“T”是任意取得一个类型参数,是一个虚拟的类型名。#includeusing namespace std;template class compare{ public: compare(T x,T y)原创 2017-01-05 19:40:00 · 285 阅读 · 0 评论 -
if else和try catch
if-else语句中,else紧跟在if语句后面else if也是一样,中间不能加插其他语句。try块和catch块作为一个整体出现,catch块是try-catch结构中的一部分,必须紧跟在try块后,不能单独使用,在二者间也不能插入其他语句——《C++程序设计》444页原创 2017-01-04 20:43:53 · 779 阅读 · 0 评论 -
for循环里定义变量要注意
《C++primer》中文版第五版12页明确提到for(int val=1;val变量val只在for循环内部存在,在循环结束之后是不能使用的,初始化语句只在for循环入口处执行一次。for(初始化语句;循环条件;表达式){循环体;}循环体每次执行前都会先检查循环条件。只要条件成立,就会执行for循环体。表达式在for循环体之后执行!!!简要重述一下for循环的总体执行流程原创 2017-01-04 19:22:04 · 3538 阅读 · 0 评论 -
C语言中副作用和序列点(关于自增自减)
自增自减运算符很常见,先后关系大家一定都知道,但是在某些情况下可能会变的有些复杂,这对于初学者造成很大困扰,《C primer plus》一书中“副作用和序列点”这一节比较清晰的说明了特殊情况的运算顺序。副作用:C语言中副作用就是对数据对象或文件的修改。从C语言的角度上来看,它的主要目的是对表达式求值,至于赋值,修改这些对于我们来说的主要目的在C语言来看都是副作用。例如,调用pri原创 2017-08-15 15:34:37 · 1125 阅读 · 1 评论