![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
Hcm_Scu
...
展开
-
static类成员
全局对象会破坏封装,所以要尽量避免使用全局变量。 static成员函数没有this形参,它可以直接访问所属类的static成员,但是不可以直接访问非static成员。 static成员的三个优点: 1.static成员的名字在类作用域中,因此可以避免与其他类的成员或者全局对象名字冲突。 2.可以实施封装,static成员可以是私有成员,而全局对象不可以。 3.sta原创 2017-09-20 21:06:27 · 367 阅读 · 0 评论 -
对象移动
标准库容器、string和shared_ptr类支持移动和拷贝。IO和unique_ptr类可以移动但不可以拷贝。通过&&来获得右值引用,它只能绑定到一个将要销毁的对象。int &rr = i*8; i*8 是一个算数表达式返回一个右值。变量表达式是左值,所以我们不能将一个右值引用绑定在一个右值引用类型的变量上。 int &rr1 = rr; //错误 但是我们可以用标准库中的函数move(在u原创 2017-11-26 15:10:43 · 210 阅读 · 0 评论 -
再次学习类的知识笔记
1.当我们定义一个任一种的构造函数的时候,编译器将不会合成默认构造函数。2.含有内置类型和复合类型成员的类应该在内部初始化这些成员,或者自己定义一个默认构造函数,否则编译器合成的默认构造函数很可能会出错。3.如果类含有一个其他类的成员变量,而且这个类没有默认构造函数,那么编译器将不能生成默认构造函数。4.非const对象不能赋值给const对象,但是const对象可以赋值给非const对象。 默认构原创 2017-11-21 17:29:10 · 217 阅读 · 0 评论 -
C++ static内部机制
static的内部机制: 静态数据成员要在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化。这样,它的空间分配有三个可能的地方,一是作为类的外部接口的头文件,那里有类声明;二是类定义的内部实现,那里有类的成员函数定义;三是应用程序的main()函数前的全局数据声明和定义处。 静态数据成员要实际地分配空间,故不能在类的声明中定原创 2017-10-13 10:16:21 · 427 阅读 · 0 评论 -
C++中堆和栈的区别
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动原创 2017-10-13 10:15:21 · 190 阅读 · 0 评论 -
数据结构学习日记(1)——栈模板的代码实现
栈的思想在于,着眼于解决刚刚碰到的问题,而将之前碰到的问题先保存下来,放到后面去解决。 比如经典的括号匹配问题就可以用栈来解决。栈模板的代码实现 放在一个头文件中#ifndef MYSTACK_H#define MYSTACK_Htemplate <typename T> class MyStack { public: MyStack(int size);// 复杂对象的栈需要有默认原创 2017-10-04 20:56:17 · 172 阅读 · 0 评论 -
C++存储类型
存储类型和作用域、生存期限、链接类型有着千丝万缕的联系。 存储类型一共有四种 : extern static 为两个永久存储类型 auto register 为两个临时存储类型 (只有变量才有临时生存期限) 默认的全局变量和全局函数为extern存储类型 显示的声明全局变量和全局函数使其具有static存储类型,它们只能被同一个编译单元所调用 局部变量默认具原创 2017-10-11 09:47:14 · 856 阅读 · 0 评论 -
计算距离系统时间N天前的日期
在我们正在做的铁路项目的删除超时文件的功能中,需要作出超时逻辑来判断遍历到的文件是否为超时文件,从而需要计算距离系统时间N天后的日期。查找资料和改编之后实现了这个小目标。“class Date { private: int year, month, day; void DecDay(); //日期减少一天函数 public: Date(int y, i原创 2017-09-28 10:38:02 · 561 阅读 · 0 评论 -
C++类型转换
相比较于内置类型的转换,类类型的转换可能要更复杂一些,先从隐式转换说起。 类类型的隐式转换最直接的就是通过构造函数来隐式转换,当某个函数希望调用的实参是类类型的时候,程序却赋值其他内置类型的实参,那么编译器将自动查找该赋值类型是否有构造函数与之对应。 比如: class hcm { public:原创 2017-09-20 14:38:08 · 215 阅读 · 0 评论 -
类的学习笔记
1.对象、指针和引用的静态类型决定了我们能够使用什么名字的成员,只能使用静态类型及其基类的成员名字。但调用的该名字的成员是动态类型的该成员。2.我们通过panda的对象、引用和指针使用了某个名字,程序会并行的在 Endangered和Bear/ZooAnimal这两棵子树种查找该名字,如果名字在超过一棵子树中被找到,则该名字具有二义性。3.如果某个类在派生的过程中出现了很多次,则派生类中将包含该类的原创 2017-12-13 22:28:07 · 178 阅读 · 0 评论