随笔分类 - C/C++
C/C++语言static关键字的作用
摘要:C/C++语言static关键字的作用 全局静态变量 在全局变量前添加static变成全局静态变量,在整个程序运行期间一直存在 内存中的位置:静态存储区,在整个程序运行中一直存在 初始化:未初始化的全局静态变量会被自动初始为 0 作用域: 全局静态变量在声明他的文件之外不可见,也就是说从申明他到文件
阅读全文
C++————虚函数内存模型
摘要:虚函数内存模型 纯虚函数 在有些情况下,在基类中不对虚函数给出有意义的实现,仅当做统一的变成接口来使用,它的实现留给该基类的派生类去做,这种称为纯虚函数 纯虚函数相当于一个接口模板,一个类中如果定义了纯虚函数,则这个类被称为抽象类,C++规定抽象类不能直接实例化对象 派生类继承父类的纯虚函数后,若给
阅读全文
C++——多态(虚函数)
摘要:C++——多态(虚函数) 多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。 多态的目的就是为了接口重用,也就是说不管传进来的是什么对象,函数都能通过同一个接口调用到适应各自对象的实现方法。 c++支持编译时多态(静态多态)和运行时多态(动态多态),运算符重载和函数重载就是编译时多态,
阅读全文
C++继承——特殊点
摘要:C++继承——特殊点 同名成员 当父子有相同的成员的时候,加上作用域::可以来选择访问具体的成员。 同名函数 如果子类中出现父类同名的函数,那么子类会隐藏掉父类的所有同名函数,如果想要访问的话也添加作用域就好了 同名静态成员 静态成员是在类初始化前就初始化,属于类外的东西,静态成员函数只能使用静态成
阅读全文
C++——模板
摘要:C++——模板 模板就是建立通用的模具,大大提高复用性 模板的特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 C++另一种编程思想称为 ==泛型编程== ,主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板 函数模板 函数模板作用: 建立一个通用函数,其函数返回值类
阅读全文
C++__静态成员
摘要:静态成员 在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。 不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。 静态成员变量: 在一个类中,如果将一个成员变量声明为static,这种成员称为静态成员变量,
阅读全文
C++__动态对象
摘要:C++__动态对象 对象创建 当创建一个c++对象时会发生两件事: 为对象分配内存 调用构造函数来初始化那块内存 c动态分配内存方法 为了在运行时动态分配内存,c在他的标准库中提供了一些函数,malloc以及它的变种calloc和realloc,释放内存的free,这些函数是有效的、但是原始的,需要
阅读全文
C++___深浅拷贝
摘要:深浅拷贝 浅拷贝 同一类型的对象之间可以赋值,使得两个对象的成员变量的值相同,两个对象仍然是独立的两个对象,这种情况被称为浅拷贝. 一般情况下,浅拷贝没有任何副作用,但是当类中有指针,并且指针指向动态分配的内存空间,析构函数做了动态内存释放的处理,会导致内存问题。 深拷贝 当类中有指针,并且此指针有
阅读全文
C++____函数重载
摘要:函数重载 实现函数重载的条件 同一个作用域 参数个数不同 参数类型不同 参数顺序不同 //例子//1. 函数重载条件namespace A{ void MyFunc(){ cout << "无参数!" << endl; } void MyFunc(int a){ cout << "a: " << a
阅读全文
C++__函数的默认参数和占位
摘要:函数的默认参数和占位 默认参数 作用: 给函数的形参添加默认值 语法 类型 变量 =默认值 //例子int a(int a=1); 注意事项: 如果有一个位置有了默认参数,那么从这个位置起,从左到右都必须有默认值 声明和实现 函数的申明和实现,都只能有一个提供默认参数,不可以同时添加默认参数 int
阅读全文
C++____内联函数
摘要:内联函数 宏函数的缺陷: 必须要加括号保证运算完整 即使加括号,有些运算依然与预期结果不符 预定义宏函数没有作用域概念,无法作为一个类的成员函数,也就是说预定义宏没有办法表示类的范围。 内联函数基本概念 在C++中,用内联函数来实现宏函数的处理方式。但是内联函数本身也是一个真正的函数。内联函数具有普
阅读全文
C++ 引用
摘要:C++ 引用 引用的目的:取别名 基本语法: 与原名的类型必须一致 //例子int a= 10;int &b = a; 注意事项 这里的&不是求地址运算,而是起标识作用 类型标识符是值目标变量的类型 必须在声明引用变量时进行初始化 引用初始化之后不能改变 不能有NULL引用。必须确保引用是和一块合法
阅读全文
C/C++—const
摘要:const连接属性 c语言下 c语言下const默认是外部连接属性 也就是说我在1.c中的全局位置const了一个常量在2.c中也可以用 但是要先使用extern const int 常量名才行 c++下 const全局变量默认是内部连接属性 如果想要变成外部连接属性可以添加extern关键字来提高
阅读全文
C++对c的增强和扩展
摘要:C++对c的增强和扩展 全局变量检测增强 int c; int c = 10; 在C下没问题,在C++下不行,因为重定义。 函数检测增强 C语言:返回值,形参类型,参数个数没有检测 但是C++中检测了 类型转换检测增强 char *p = malloc(64) c++下必须一致: char *p =
阅读全文
C++-namespace
摘要:C++-namespace 在命名空间后面添加::限制运算符可以取到对应的具体的命名空间的内容,用来解决命名的冲突 命名空间下可以放的内容 变量,函数,结构体,类等等都可以 命名空间必须要声明在全局作用域下 不可以命名在局部作用域如函数栈中 命名空间可以嵌套命名空间 #include<iostrea
阅读全文
递归函数
摘要:递归函数的本质就是自己调用自己 需要注意的是递归函数比较有一个出口 例子实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> //利用递归函数实现字符串逆序 void reversePrint(char* p) { if (*p == '\0')
阅读全文
动态库
摘要:动态库 把程序的模块互相分割开,形成独立的文件。而不是采用静态库把不同的模块直接编译在一起。也就是说不对这些组成程序的目标程序进行链接、等待程序运行的时候才链接。 也就是把整个链接过程推迟到了运行的时候再进行。 创建动态库 直接采用空项目处理 然后创建对应的头文件和源文件 需要注意的是由于这是一个在
阅读全文
静态库配置
摘要:静态库配置 将自己写好的代码用静态dll链接的办法给别人使用 生成静态dll文件 创建一个对应的项目,一个包含头文件和源文件的项目 然后把项目的属性配置为静态库 然后这里由于不是可执行文件而是一个静态库,所以直接采用生成来处理。 在当前项目文件下的debug中可以看到生成的lib文件 使用静态库 由
阅读全文
预处理指令-条件编译 宏
摘要:预处理指令-条件编译 宏 条件编译: 一般情况下,源程序中的所有行都参加编译,但是有时希望对部分源程序行只在满足一定条件下才编译,也就是对这部分源程序行指定编译条件: 测试存在: #ifdef 标识符 程序段1#else 程序段2#endif//当标识符存在时就编译程序段1不然就是2 测试不存在
阅读全文
回调函数-对任意数据类型进行打印
摘要:# 回调函数 函数指针做函数参数 ## 实现对任意数据类型进行打印 定义一个void指针,然后讲void指针的地址和用户自己定义的函数用在回调函数里面来调用用户的函数最后处理输出。这里的例子是用double来处理,其他的都是一样的或者结构体变量也是一样处理。 1 #define _CRT_SEC
阅读全文
浙公网安备 33010602011771号