- 博客(12)
- 收藏
- 关注
原创 [C++] 继承和动态内存管理
在继承中,需要特别注意对动态内存的处理,当操作基类和派生类对象时,如果管理不当,就会造成如内存的二次释放、派生类内存未释放等问题。申请内存时需要在构造函数(尤其是拷贝构造函数)、赋值运算符中使用new来申请,在释放内存时则需要在析构函数中使用delete释放。下面就来看看继承中和如何合理地通过拷贝构造、赋值运算符、析构函数来管理动态内存。1.基类中未使用动态内存分配,派生类中未使用动态内存分配...
2018-11-30 16:10:58 310
原创 [C++] 继承、虚函数、纯虚函数、虚基类
1.继承1.1.继承语法格式要实现继承,遵循如下语法格式:class SubClass : [public/protected/private] SuperClass{ //... };其中SubClass称为派生类或子类,SuperClass称为基类或父类。冒号之后的访问修饰符的作用如下:1.public表示公有继承,基类的公有成员将成为派生类的共有成员,基类的私有部分...
2018-11-29 07:28:00 1942
原创 [C++] 拷贝构造函数和浅拷贝问题
1.拷贝构造函数当使用一个对象来初始化另一个同类对象时,编译器将自动生成一个构造函数,这个构造函数称为拷贝构造函数,其格式如下:CustomClass(const CustomClass & obj);在之前说过,创建类时,如果没有提供构造函数,那么编译器将会自动提供一个默认的构造函数。拷贝构造函数也是一样,如果没有提供拷贝构造函数,那么编译器将会提供一个默认的拷贝构造函数。1...
2018-11-26 23:29:57 549
原创 [C++] 运算符重载
1.为何需要重载运算符自定义的类,不支持常用的操作符号,如果需要使用一些操作符,则该类必须对相应的操作符进行重载。如自定义类Person:#include <string>class Person{ private: int m_age; std::string m_name; public: Person(in...
2018-11-23 18:11:27 1177
原创 [C++]类总结
1.类基础1.1.类的声明一般的习惯是,类的声明和定义分别在头文件和源文件中进行,声明一个类时,使用关键字class,语法如下://Person.h#include <string>class Person { private: int age; std::string name; public: s...
2018-11-21 23:41:58 356
原创 [C++]namespace和using关键字
1.什么是名称空间一个用于声明名称的区域。2.作用一个名称空间的名称不会与另一个名称空间中相同名称发射给你冲突,从而可以避免名称冲突。3.创建名称空间使用关键字namespace创建,如:namespace MySpace{ int age; double weight; ...}可以对名称空间进行嵌套:namespace MySpace{ in...
2018-11-21 11:21:51 387
原创 [C++] 函数总结
1.函数的定义定义函数三要素:函数名、参数列表、返回值;1.2.函数原型在函数使用前,必须对它进行声明,这个声明也称为函数原型。如:#include <iostream>//add()函数原型int add(const int& i,const int& j);int main(){ using namespace
2018-11-18 10:33:15 313
原创 [C++] const限定符
在定义变量时,如果希望该变量是一个只读的常量,则在变量前加const限定符即可。1.用于基本类型对于基本类型变量,定义只读常量有两种方式:#define预处理器编译指令和const限定符,前者是C中的语法,后者是C++中特有。#define和const的区别#define和#include一样,是一个预处理器编译指令,如:#define SIZE 21该指令告诉预处理器,在程序中查找...
2018-11-13 07:44:59 274
原创 [C++] cctype头文件的使用
cctype是c/c++标准库中提供的用于操作字符的头文件。在cctype中,声明了一系列对于单个字符进行分类和转换的函数,cctype中的函数可以分为两大类:字符分类函数和字符转换函数,使用时通过#include预处理指令将引入该文件即可:#include <cctype>//或#include <ctype.h>//老式风格下面对cctype头文件中定义的函数...
2018-11-08 20:24:39 3611
原创 [C++] cin.get(),cin.getline(),cin.clear()使用技巧
cin是用于输入的istream类的一个对象使用cin进行输入时,程序将输入视为一系列的字符,然后cin对象才负责将字符转换为其他类型。在输入数据时,可使用cin >> ch、cin.get(ch)、ch = cin.get()、cin.getline()等多种方式,看似简单,但其中的细节却非常重要,理解了这些cin的特点,那么cin在一些特殊场景下的用法也就一目了然了。如将cin用作...
2018-11-08 20:22:14 2366
原创 Android 8.1 DisplayPowerController(五) 自动调节亮度(2)——算法
在上一篇文章中,对自动背光的流程做了总结,在本篇中,将对自动背光涉及到的一些算法进行分析总结。1.采集光照强度缓冲区AmbientLightRingBuffer类是一个用于存储采集到的光照强度和对应时间点的数据接口。在自动背光控制器中,实例化了两个AmbientLightRingBuffer对象://包含所有光照样例的AmbientLightRingBuffer对象mAmbientLigh...
2018-11-06 14:57:51 5678 1
原创 Android 8.1 DisplayPowerController(四) 自动调节亮度(1)——流程
和手动调节亮度相比,自动调节亮度则稍微复杂些。其中涉及到多个算法。这里先笼统地介绍其流程,对涉及到的算法在下一篇文章中进行学习。从前面的分析得到,不管是哪种背光调节方式,其最终都会在DisplayPowerController的updatePowerState()方法中进行决策,得到最终的背光值,自动背光的亮度也不例外:private void updatePowerState() { ...
2018-11-04 16:16:10 6298 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人