
编程
编程的相关笔记记录
小白小宋
这个作者很懒,什么都没留下…
展开
-
mutable关键字
在C++中,mutable 是为了突破 const 的限制而设置的。可以用来修饰一个类的成员变量。被 mutable 修饰的变量,将永远处于可变的状态,即使是 const 函数中也可以改变这个变量的值。在const对象中,我们不希望修改对象的内容。但在某些类里面我们必须通过修改某些变量来做类似遍历的操作,但这个时候必会与const冲突。这是我们可以在变量前面加mutable,以此告诉编译器修改这个变量不会破坏对象的常量性。也就是说:(1) mutable 只能用来修饰某个类的成员变量 .原创 2021-10-13 08:51:04 · 312 阅读 · 0 评论 -
c/c++编译过程及链接
编译过程程序编译的过程中就是将用户的文本形式的源代码(c/c++)转化成计算机可以直接执行的机器代码的过程。主要经过四个过程:预处理、编译、汇编和链接。具体示例如下。一个hello.c的c语言程序如下。可以看出进行汇编以后,会生成.o文件链接静态链接静态链接是指把要调用的函数或者过程直接链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的可行性文件.exe中,该文件包含了运行时所需的全部代码。可以看出,静态链接的缺点就是,当多个程序调用相同函数时,内存.原创 2021-10-12 11:03:53 · 332 阅读 · 0 评论 -
引用和指针
(1) 定义指针- 对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址引用- 引用是一个对象的别名,主要用于函数参数和返回值类型,符号int&表示int类型的引用(2) 基础引用不可以为空,但指针可以为空。所以在使用指针之前要进行判空操作。引用必须初始化,说白了引用就是一个对象的别名。引用不可以改变指向;但是指针可以改变指向,而指向其它对象。说明:虽然引用不可以改变指向,但是可以改变初始化对象的内容。例如就++操作而言,对引用的操作直接反应到原创 2021-10-11 20:22:49 · 418 阅读 · 0 评论 -
map容器插入数据
map容器插入数据的4种方法_cbNotes的专栏:不积硅步,无以至千里;不积小流,无以成江海!-优快云博客_map添加数据的方法转载 2021-10-09 14:28:15 · 682 阅读 · 0 评论 -
C++ for_each
for_each是C++泛型算法,其源码如下: template<typename _InputIterator, typename _Function> _Function for_each(_InputIterator __first, _InputIterator __last, _Function __f) { // concept requirements __glibcxx_function_requires(_InputIte原创 2021-09-15 16:48:07 · 4220 阅读 · 0 评论 -
C++ fill()和fill_n()
fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(vec.begin(), vec.end(), val); val为将要替换的值;fill_n函数的作用是:参数包括 : 一个迭代器,一个计数器以及一个值。该函数从迭代器指向的元素开始,将指定数量的元素设置为给定的值。注意: 不能在没有元素的空容器上调用fill_n函数。在本例中,std::fill_n()用0x42填充一个缓冲区10个实例大小。然而,容器并没有为缓冲区分配大小,导致了缓冲区溢出。#inc原创 2021-09-15 16:34:03 · 311 阅读 · 0 评论 -
C++ std:copy()
1、std::copy()复制[first, last)所定义的范围中的元素到始于d_first的另一范围。std::copy(start, end, container.begin());copy只负责复制,不负责申请空间,所以复制前必须有足够的空间。如果container的大小小于输入序列的长度N的话,这段代码会导致崩溃(crash)。所以此时引入了back_inserter,如下std::copy(src.begin(), src.end(), std::back_inse...原创 2021-09-15 16:22:49 · 13602 阅读 · 1 评论 -
二进制、十进制、八进制、十六进制
1、简介(1)十六进制数是一种逢十六进一的计数体制,基数是16,用0~9,A~F表示,如0xFF或0XFF。十六进制数以数字0和字母x的组合0x或0X开头。其中字母x是不区分大小写的,即0x与0X等价。(2)八进制数是一种逢八进一的计数体制,基数是8,用0~7表示,如077。八进制数以数字0开头。(3) 十进制即为自然数,如平时的23、55都是十进制,通常用字母D表示(4) 二进制利用0、1表示,通常用B表示2、各个进制之间的转换如十六进制:0xEA32转为二进制:1110...原创 2021-07-08 15:31:22 · 3161 阅读 · 0 评论 -
C++ explicit关键字
1、如果构造函数只接受一个实参,则他实际上定义了转换为此类类型的隐式转换机制(即implicit),经常见的例子如下:string s("flag"); //调用string 只有一个实参的构造函数string s = "falg"; //也可以,此时实际的操作就是: // string temp("flag"); s = temp;(拷贝)2、显示声明的构造函数和隐式声明的区别如下:(1)如下隐式声明的情况#in...原创 2021-07-08 11:56:28 · 156 阅读 · 0 评论 -
sql语句
(1) 查询指定表内的全部条数select count(*) from tableName;(2) 查询指定表内满足条件的记录select * from tableName where timet between ‘1625’ AND ‘1626’(3)查询指定表内满足条件记录的条数select count(*) from tableName where timet between '1625' AND '1626'(4) 利用where查询满足条件的记录select * ...原创 2021-07-17 16:54:30 · 94 阅读 · 0 评论 -
C++ this
1、类的成员变量在初始化时,其初始化的顺序只与声明顺序有关,而与在初始化列表中的顺序无关。2、当我们调用一个成员函数时,用请求该函数的对象地址初始化this3、this是一个常量指针,不允许改变this中保存的地址4、一个常量成员函数,可以被 const 和 non-const 类对象调用; 而非常量成员函数,例如 AddYear(),则只能被 non-const 型类对象调用。常量对象不能调用非常量的成员函数(因为常量对象意味着该对象下的所有成员都是const类型,调用非常量的成员函数时,编.原创 2021-07-02 15:33:13 · 230 阅读 · 0 评论 -
C++纯虚函数和虚函数
https://blog.youkuaiyun.com/u014465639/article/details/72758690如果某个类中有申明虚函数,则该虚函数必须被实现;如果子类继承了父类的虚函数,可以沿用父类的实现,也可以进行重写。转载 2021-06-29 17:04:20 · 102 阅读 · 0 评论 -
const关键字
(一)const 修饰对象1、const对象必须进行初始化;2、默认情况下,const和static关键字类似,const对象仅在该文件内有效。如果要在别的文件中有效,那么必须显式地声明为extern变量;如下:extern const int bufSize = 0;(二)const的引用(常量引用)1、const int c = 1024; const int &r = c;(不能改变所绑定对象的值)2、const变量必须由const引用指向,而非const变量及可以..原创 2021-06-29 11:51:25 · 490 阅读 · 0 评论 -
C++中typedef,define和#,##
c++编译的四个过程:预处理、编译、汇编、链接;一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。二、#define的用法#define...原创 2021-06-30 15:59:52 · 203 阅读 · 0 评论 -
常量表达式和constexpr
1、常量表达式是指值不会改变并且在编译过程就能得到计算结果的表达式,如下:const int max_i= 5; //max_i 是常量表达式int max_i = 5 //max_i不是常量表达式const int max_i = get_size(); //max_i不是常量表达式,因为其具体值只有在运行时才能获取到2、constexpr变量声明为constexpr的变量一定是一个常量,而且必须要用常量表达式初始化:constexpr int ...原创 2021-06-30 14:27:22 · 248 阅读 · 0 评论 -
默认实参和内联函数
一、默认实参1、背景:某些函数有个别行参在多次调用中都被赋予相同的值。将反复出现的值称为函数的默认实参。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。2、一旦某个行参被赋予了默认值,它后面的所有行参都必须有默认值。所以函数在定义行参时,要将经常改变的放在前面,经常使用默认值的行参出现在后面。3、在给定的作用域中一个行参只能被赋予一次默认实参。即函数的后续申明只能为之前没有默认值的行参添加默认实参。4、局部变量不能作为默认实参。二、内联函数1、背景:调用函数一般比求等价表原创 2021-07-01 11:55:07 · 119 阅读 · 0 评论 -
C++ 构造函数
一、某些类不要依赖合成的默认构造函数1、只有当类没有申明任何构造函数时,编译器才会自动生成默认构造函数。只要类定义了构造函数,则不会生成默认构造函数。例如:声明了一个带参的构造函数,则默认构造函数则不会自动生成。此时若要声明一个class c的对象,则需要把无参构造也显式的声明一遍。2、如果类中包含一个其他类型的成员且该成员的类型没有默认构造函数,则编译器无法初始化该成员。此时,我们必须自定义构造函数。二、构造函数的初始化列表class(int id, string name, double原创 2021-07-05 10:53:38 · 190 阅读 · 0 评论 -
C++重载、重写、多态
1、重载(overload)overload是重载,一般是在一个类实现若干重载的方法,这些方法的名称相同而参数形式不同。但是不能靠返回类型来判断。(返回值类型可以一致也可以不一致,但是参数列表必须不同)重载需要注意:(1) 位于同一个类中(2) 函数的名字必须相同(3) 形参列表不同(4) 不同的构造函数(无参构造、有参构造、拷贝构造)是重载的应用2、重写(override)override是重写(覆盖)了一个方法,以实现不同的功能。一般用于子类在继承父类时,重写(覆盖)父类原创 2021-06-29 16:11:16 · 570 阅读 · 0 评论