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