- 博客(9)
- 收藏
- 关注
原创 函数对象与谓词
函数对象 概念: 重载函数调用操作符的类,其对象常称为函数对象。 函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质: 函数对象(仿函数)是一个类,不是一个函数 函数对象使用 1.函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值 2.函数对象超出普通函数的概念,函数对象可以有自己的状态 3.函数对象可以作为参数传递 1.函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值 class Myadd{ public: int operator()(int v1,int
2021-03-16 12:33:24
106
原创 内存四区
程序运行前: 在程序编译后,生成exe 可执行程序,未执行该程序前分为两个区域。 代码区: 存放cpu执行的机器指令 代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。 代码区是只读的,使其只读的原因是防止程序意外的修改了他的指令 全局区: 全局变量和静态变量存放在此 全局区还包含了常量区,字符串常量和其他常量(const 修饰的全局常量)也存放在此 该区域的数据在程序结束后由操作系统释放。 程序运行后: 栈区: 由编译器自动分配释放,存放函数的参数值,局部变量等 注意事项:不
2021-03-15 20:13:20
108
原创 pair对组
Pair对组创建 : 功能描述:成对出现的数据,利用对组可以返回两个数据 两种创建方式: pair<type,type>p(value1,value2); pair<type,type>p=make_pair(value1,value2); void test() { pair<string, int>p("zhai", 24); cout << p.first << " " << p.second << endl;
2021-03-15 09:34:49
92
原创 函数模板与类模板
C++提供两种模板机制:函数模板,类模板。 函数模板: 建立一个通用函数,其返回值类型和形参类型不具体确定,用一个虚拟的类型来代替。 如:void test(int a);其中的void和int可以先不确定,等执行的时候在确定。 语法: template<typename T> template - 声明创建模板 typename - 表明其后面的符号是一种数据类型,可以用class代替 T - 通用的数据类型,名称可以替换,通常为大写字母 #include<iostream>
2021-03-12 15:51:06
168
原创 多态实现及虚函数
多态是C++面向对象三大特性之一 多态分为两类: 1.静态多态:函数重载和运算符重载属于静态多态 2.动态多态:派生类与虚函数实现运行时多态 区别: 静态多态的函数地址早绑定-编译阶段确定函数地址 动态多态的函数地址晚绑定-运行阶段确定函数地址 class Animal{ public: void speak(){ cout<<"动物在说话"<<endl; } } class Cat:public Animal{ public: void speak(){ cout&
2021-03-10 17:09:04
201
原创 浅拷贝与深拷贝
在c++中,我们创建类时,构造函数有 以下几种: 按参数分为:有参构造和无参构造 按类型分为:普通构造和拷贝构造 如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造函数。 如果用户定义拷贝构造函数,c++不在提供其他构造函数。 其中C++提供的默认拷贝构造函数是浅拷贝,只进行简单的赋值拷贝操作,很容易造成内存重复释放,而深拷贝是在堆区重新开辟空间,可以解决浅拷贝带来的问题。 class Person{ public: Person(){ cout<<"person
2021-03-09 17:22:02
91
原创 const修饰成员函数
首先,我们搞清两个定义: 常函数: 1.成员函数后加const后,我们称这个函数为常函数,如: void show() const{ **** **** } 2.常函数内不可修改成员属性 3.成员属性声明时加关键字mutable后,在常函数中才可以修改,如下: class Person { public: //this 指针的本质是指针常量, 指针的指向是不可以修改的 //const Person * const this ...
2021-03-07 21:13:44
365
原创 析构函数与构造函数
在C++中,有两个特殊的函数,构造函数,析构函数。这两个函数是类中必有的实现,如果我们不提供,编译器会自动提供空的构造和析构函数。 构造函数:进行初始化操作 析构函数:进行清理操作 构造函数语法: 类名(){ 要做的操作 } 1.构造函数没有返回值,也不写void 2.构造函数名称与类名相同 3.构造函数可以有参数,因此可以发生重载 4.程序在调用对象的时候会自动调用构造,而且只会调用一次,所以我们无需手动调用 析构函数语法: ~类名(){ 要做的操作 } 1.析构函数没有返回值,也不写void 2.
2021-03-06 22:09:56
158
原创 C++函数分文件编写实现
在C++中,函数分文件编写一般有四个步骤: 1.创建后缀名为.h的头文件 2.创建后缀名为.cpp的源文件 3.在头文件中写函数的声明 4.在源文件写函数的定义 下面以一个实例为说明对象: 我们要实现一个功能,给出一个圆,和一个点,判断该点是否在这个圆内。 首先,我们创建一个代表“点”的头文件(pointer .h),在这个头文件中写一个类,代码如下: #include<iostream> using namespace std; class pointer { public: void se
2021-03-06 21:34:17
562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人