C/C++
fistraiser
这个作者很懒,什么都没留下…
展开
-
C++在new一个对象时是否加()的区别
1、对于有自己写构造函数的类,不论类型名后面有没有括号,都用构造函数进行初始化;2、如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,3、而加了括号的new会在分配内存的同时初始化为0。...原创 2020-06-11 17:23:15 · 466 阅读 · 0 评论 -
数据库连接池
(1)建立数据库连接池对象(服务器启动)。(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。(4)存取数据库。(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接原创 2020-05-23 10:35:01 · 285 阅读 · 0 评论 -
关于#define offsetof(s,m) (size_t)&(((s *)0)->m)
#define offsetof(s,m) (size_t)&(((s *)0)->m)s是一个结构体,m是s的成员变量这个宏的作用是取到s中的m相对于s的偏移量(s *)0 将0强制转换为s类型的指针,并指向0地址((s *)0)->m 使该指针指向成员变量m&(((s *)0)->m) 获取成员变量m的地址,因为首地址是0,所以m的地址值就等于m的偏移量(size_t)&(((s *)0)->m) 将地址转换为size_t类型...原创 2020-05-14 15:23:13 · 511 阅读 · 0 评论 -
怎样跳出if语句的代码块
如果不想用goto语句的话,可以用以下方式do{ dosomething(); if(condition) break; ...}while (0);原创 2020-05-11 19:35:31 · 5062 阅读 · 0 评论 -
C++ 函数前面加上::
意思是要调用的是全局函数,::前面是空的代表的是全局作用域原创 2020-04-02 14:35:22 · 1442 阅读 · 1 评论 -
不允许指针指向不完整的类类型 问题
没有include需要的文件原创 2019-10-24 17:58:33 · 1071 阅读 · 0 评论 -
C++ 类的六个默认成员函数 复习笔记
类的六个默认成员函数: 构造函数 拷贝构造函数 析构函数 赋值操作符函数 取地址操作符重载 const修饰的取地址操作符重载构造函数: 构造函数是一种随着对象创建而自动被调用的公有成员函数,仅在定义对象时自动执行一次,它的主要用途是为对象作初始化 构造函数是特殊的成员函数,其特征如下: 函数名与类名相同 ...原创 2019-07-21 14:53:22 · 89 阅读 · 0 评论 -
C++ 构造函数 友元函数 static成员 复习笔记
构造函数: 构造函数体赋值:构造函数体中操作只能将其称作为赋初值 初始化列表:以冒号开始,以逗号分隔的数据成员列表,每个成员变量后面跟一个放在括号中的初始值或表达式 每个成员在初始化列表中只能出现一次 初始化列表仅用于初始化类的数据成员,并不指定这些数据成员的初始化顺序,数据成员在类中定义顺序就是初始化列表中的初始化顺序 尽量避免使用...原创 2019-07-21 19:01:58 · 525 阅读 · 0 评论 -
C++ 内存管理 复习笔记
内存分段: 栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下生长的 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库,用户可使用系统接口创建共享内存,做进程间通信 堆用于程序运行时动态内存分配,堆是向上增长的 数据段--存储全局数据和静态数据 代码段--可执行的代码/只读常量C++内存管理方式 new/delete 动态管...原创 2019-07-21 22:24:09 · 109 阅读 · 0 评论 -
C++ 继承 复习笔记
继承权限&访问限定符 基类private成员在派生类中是不能被访问的,如果基类成员不想在类外直接别访问,但需要在派生类中能访问,就定义为protect,保护成员限定符是因继承才出现的 public继承是一个接口继承,保持is-a原则,每个父类可用的成员对子类也可用,因为每个子类对象也都是一个父类对象 protected/private继承是一个实现继承,基类的部分成...原创 2019-07-22 16:55:59 · 106 阅读 · 0 评论 -
取两次反的作用
转换数据类型为Boolean类型原创 2019-07-31 14:31:42 · 394 阅读 · 0 评论 -
C++ 多态 复习笔记
多态概念: 虚函数: 虚函数是一种在基类定义为virtual的函数,并在一个或多个派生类中再定义的函数。虚函数的特点是,只要定义一个基类的指针,就可以指向派生类的对象 虚函数重写---当在子类中定义了一个与父类相同的虚函数时,则称子类的这个函数重写了父类的这个虚函数 虚函数虚在“推迟联编”或者“动态联编”上,一个类函数的调用并不是在编译时刻被...原创 2019-07-23 10:33:57 · 218 阅读 · 0 评论 -
C++ 泛型编程 模板 复习笔记
泛型编程: 编写与类型无关的逻辑代码,是代码复用的一种手段。模板是泛型编程的基础 模板的精神:参数化类型。将一个原本特定于某个类型的算法或类中的类型信息抽掉,抽出来做成模板参数T函数模板: 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本 template<typename T> void...原创 2019-07-27 16:39:57 · 140 阅读 · 0 评论 -
explicit
explicit 修饰的构造函数只能被显示调用原创 2019-08-08 11:02:49 · 246 阅读 · 0 评论 -
C++ 类与对象 复习笔记
类与对象: 类是对象的抽象,而对象是类的具体实例 类是抽象的,不占用内存,而对象是具体的,占用存储空间面向过程与面向对象: C语言是面向过程的,关注的是过程中的数据与方法 C++是面向对象的,关注的是对象的属性与功能类的定义: 类的成员函数默认是内联的。除了类外定义且不加inline关键字。 类的两种定义方式: 类的声明和定义...原创 2019-07-20 22:37:10 · 191 阅读 · 0 评论 -
C++命名空间 缺省参数 函数重载 引用 内联函数复习笔记
命名空间 对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的 命名空间可以嵌套,同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成到同一个命名空间中 一个命名空间就定义了一个作用域,命名空间中的所有内容都局限于该命名空间中缺省参数 声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定...原创 2019-07-20 20:11:39 · 161 阅读 · 0 评论 -
C语言可变参数列表解析
我们通过下面这个简单的例子来了解一下C语言可变参数列表的使用:#include <stdio.h>#include <stdlib.h>#include <stdarg.h>int get_max(int n,...){ va_list arg; //声明一个va_list变量arg,用于访问参数列表未确...原创 2018-05-19 19:30:03 · 207 阅读 · 0 评论 -
指针总结
一、指针数组 指针数组是数组,这个数组里面存放的是指针。二、数组指针 数组指针是指针,这个指针指向一个数组,存放数组的地址。三、函数指针 函数指针是指针,存放函数的入口地址。四、函数指针数组 函数指针数组就是数组,只不过这个数组存放的是函数指针而已。五、指向函数指针数组的指针 指向函数指针数组的指针还是指针,这个指针指向数组元素为函数指针的数组。...原创 2018-06-06 01:06:15 · 119 阅读 · 0 评论 -
自定义类型:结构体,枚举,联合
一、结构体1、结构体类型声明struct tag //见名知义,可以省略但不建议省略{ member_list; //C语言中不能为空}variable_list; //建议省略 例如描述一个学生struct Stu{ char name[20]; int age; char sex[5]; char id[20];};2、结构体初始化struct Point{...原创 2018-06-07 02:47:19 · 98 阅读 · 0 评论 -
C语言操作符
一、算数操作符 + - * / % 1、除了%操作符之外,其他的几个操作符可以用于整数和浮点数。 2、对于/操作符如果两个操作数都为整数,执⾏行行整数除法。⽽而只要有浮点数执⾏行行的就是浮点数除法。 3、%是求模运算符,两个操作数都必须为整数。返回整出后的余数。二、移位操作符 << 左...原创 2018-05-30 23:55:47 · 101 阅读 · 0 评论 -
string类中的length()和size()的区别
用VS2013查看,可以发现没有任何区别,只有名字不同,应该只是为了增加代码的可读性。。。原创 2018-08-23 19:45:51 · 30132 阅读 · 0 评论 -
C++返回std:wstring格式的当前时间的函数
std::wstring getCurrentTimeWstr(){ time_t tt = time(NULL);//tt是一个时间戳 tm* t= localtime(&tt); int year = t->tm_year + 1900; int mon = t->tm_mon + 1; int day = t->tm_mday; int hour =...原创 2019-03-18 19:27:34 · 403 阅读 · 0 评论 -
C++11 Lambda表达式
// capture_list:捕获外部变量列表// params_list:形参列表// mutable:是否可以修改捕获的变量// exception:异常设定// return_type:返回类型// function_body:函数体[capture_list] (params_list) mutable exception-> return_type { fu...原创 2019-04-16 19:31:40 · 102 阅读 · 0 评论 -
文件存储版本通讯录(C语言)
head.h#pragma once#include <stdio.h>#include <stdlib.h>#include <string.h>#pragma warning(disable:4996)#define MAX_NAME 20#define MAX_SEX 5#define MAX_TEL 20#define MAX_A...原创 2018-06-13 13:50:34 · 176 阅读 · 0 评论 -
动态版本通讯录
head.h#pragma once#include <stdio.h>#include <stdlib.h>#include <string.h>#pragma warning(disable:4996)#define MAX_NAME 20#define MAX_SEX 5#define MAX_TEL 20#define MAX_A...原创 2018-06-12 18:09:52 · 107 阅读 · 0 评论 -
求两个数的最大公约数(C语言)
辗转相减法:#include <stdio.h>#include <stdlib.h>int main(){ int a, b; printf("请输入要求公约数的两个数:"); scanf("%d %d",&a,&b); if (a < b) { a = a^b; b = a^b; a = a^b; } whi...原创 2018-05-05 18:31:31 · 4835 阅读 · 0 评论 -
交换两个变量的值,不引入第三个变量(C语言)
第一种方法:数学运算,这种方法有溢出的风险#include<stdio.h>#include<stdlib.h>int main(){ int a = 1; int b = 2; printf("交换前:a=%d,b=%d\n", a, b); a = a + b; b = a - b; a = a - b; printf("交换后:a=%d,b...原创 2018-05-05 16:15:22 · 3081 阅读 · 0 评论 -
求素数(C语言)
求100到200之间的素数#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ int i = 0; for ( i = 101; i < 200; i+=2) { int j = 0; int k = (int)sqrt(i); for (j = 2...原创 2018-05-05 10:16:55 · 1036 阅读 · 1 评论 -
C++ STL 复习笔记
STL(standard template libaray): 标准模板库,是C++程序设计语言的标准程序库,是一个包罗算法与数据结构的软件框架。 STL的的目的是标准化组件,所以在STL中使用了泛型编程的思想,对我们常用的数据结构:顺序表、链表、树、哈希以及常用的查找、排序等算法使用模板进行了封装,而且从运行效率以及内存使用上都基本达到了最优。引入STL后,再也不需要我们重新造轮...原创 2019-07-28 22:59:44 · 294 阅读 · 0 评论 -
函数的调用过程(栈帧)
我们来深入研究一下函数的调用过程。先看下面这个简单的C语言源程序:#include <stdio.h> #include <stdlib.h> int add(int A,int B) { int z = A + B; return z; } int main() { int a = 0xAAAA...原创 2018-05-10 20:49:11 · 3231 阅读 · 1 评论