c++
小草dym
这个作者很懒,什么都没留下…
展开
-
模板的局限性
模板的局限性局限性: 模板的通用性并不是万能的 在上述代码中提供的赋值操作,如果传入的a和b是一个数组,就无法实现了在上述代码中,如果T的数据类型传入的是像Person这样的自定义数据类型,也无法正常运行因此C++为了解决这种问题,提供模板的重载,可以为这些特定的类型提供具体化的模板#include <iostream>using namespac...原创 2020-02-19 17:55:31 · 256 阅读 · 0 评论 -
普通函数与函数模板的区别
普通函数与函数模板区别: 普通函数调用时可以发生自动类型转换(隐式类型转换) 函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换 如果利用显示指定类型的方式,可以发生隐式类型转换 #include <iostream>using namespace std;//普通函数int myAdd01(int a, int b){ return ...原创 2020-02-19 17:25:49 · 356 阅读 · 0 评论 -
函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试
案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream>using namespace std;//交换的函数模板template<typename T>void mySwap(T& a, ...原创 2020-02-19 17:10:45 · 1000 阅读 · 0 评论 -
C++提高编程
C++提高编程针对C++泛型编程和STL技术做详细讲解模板模板的概念 模板就是建立通用的模具,大大提高复用性 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的函数模板 C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板函数模板语法 函数模板作用: 建立一个通用函数,其函数返回值类型和形...原创 2020-02-19 16:57:47 · 226 阅读 · 0 评论 -
左移运算符重载
左移运算符重载作用:可以输出自定义数据类型 #include <iostream>using namespace std;class Person { friend ostream& operator<<(ostream& out, Person& p);public: Person(int a, int b) { t...原创 2020-02-09 20:20:13 · 178 阅读 · 1 评论 -
运算符重载
运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型加号运算符重载作用:实现两个自定义数据类型相加的运算#include <iostream>using namespace std;#include <string>class Person {public: Person() {}; Person(in...原创 2020-02-09 20:11:06 · 99 阅读 · 0 评论 -
友元
友元生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 ==friend==友元的三种实现...原创 2020-02-09 19:58:02 · 253 阅读 · 0 评论 -
C++对象模型和this指针
C++对象模型和this指针成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上#include <iostream>using namespace std;class Person {public: Person() { mA = 0; } //非静态成员变量占对象空间 int mA; //静...原创 2020-02-09 19:27:36 · 207 阅读 · 0 评论 -
初始化列表||类对象作为类成员|| 静态成员
初始化列表作用:C++提供了初始化列表语法,用来初始化属性语法:构造函数():属性1(值1),属性2(值2)... {}#include <iostream>using namespace std;class Person {public: ////传统方式初始化 //Person(int a, int b, int c) { // m_A = a; ...原创 2020-02-09 12:26:12 · 353 阅读 · 0 评论 -
深拷贝与浅拷贝
深拷贝与浅拷贝深浅拷贝是面试经典问题,也是常见的一个坑浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作#include <iostream>using namespace std;class Person {public: //无参(默认)构造函数 Person() { cout << "无参构造函数!" <&...原创 2020-02-09 12:00:36 · 144 阅读 · 0 评论 -
对象的初始化和清理
对象的初始化和清理构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和...原创 2020-02-08 22:35:46 · 212 阅读 · 0 评论 -
结构体案例
案例1案例描述:学校正在做毕设项目,每名老师带领5个学生,总共有3名老师,需求如下设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值最终打印出老师数据以及老师所带的学生数据。srand((unsigned int)time(NULL)); //随机数种子...原创 2020-02-08 16:52:13 · 1007 阅读 · 0 评论 -
结构体
结构体基本概念结构体属于用户==自定义的数据类型==,允许用户存储不同的数据类型结构体定义和使用语法:struct 结构体名 { 结构体成员列表 };通过结构体创建变量的方式有三种: struct 结构体名 变量名 struct 结构体名 变量名 = { 成员1值 , 成员2值...} 定义结构体时顺便创建变量 #include <iostre...原创 2020-02-08 16:36:18 · 214 阅读 · 0 评论 -
指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序
指针指针的基本概念指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用指针变量定义语法: 数据类型 * 变量名;#include <iostream>using namespace std;int main() { //1、指针的定义 int a = 10...原创 2020-02-08 14:15:28 · 448 阅读 · 0 评论 -
函数||值传递||函数的常见样式||函数的声明||函数的分文件编写
概述作用:将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。函数的定义函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式#include <iostream>using namespace std;//函数定义int add(i...原创 2020-02-08 13:50:58 · 417 阅读 · 0 评论 -
二维数组||考试成绩统计: 案例描述:有三名同学(张三,李四,王五),在一次考试中的成绩分别如下表,请分别输出三名同学的总成绩
二维数组定义方式二维数组定义的四种方式:#include <iostream>using namespace std;int main() { //方式1 //数组类型 数组名 [行数][列数] int arr[2][3]; arr[0][0] = 1; arr[0][1] = 2; arr[0][2] = 3; arr[1][0] = 4; a...原创 2020-02-08 13:35:13 · 4698 阅读 · 1 评论 -
五只小猪称体重||数组元素逆置||冒泡排序
练习案例1:五只小猪称体重案例描述:在一个数组中记录了五只小猪的体重,如:int arr[5] = {300,350,200,400,250};找出并打印最重的小猪体重。#include <iostream>using namespace std;int main(){ //1.创建5只小猪体重的数组 int arr[5]={300,350,200,400,2...原创 2020-02-08 13:21:59 · 1289 阅读 · 0 评论 -
数组
概述所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个==数据元素都是相同的数据类型==特点2:数组是由==连续的内存==位置组成的一维数组一维数组定义方式一维数组定义的三种方式:#include <iostream>using namespace std;int main() { //定义方式1 //数据类型 数组名[...原创 2020-02-08 12:41:01 · 315 阅读 · 0 评论 -
goto语句
goto语句作用:可以无条件跳转语句语法: goto 标记;解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置#include <iostream>using namespace std;int main() { cout << "1" << endl; goto FLAG; cout << "2" ...原创 2020-02-08 12:25:17 · 132 阅读 · 0 评论 -
程序流程结构
C/C++支持最基本的三种程序运行结构:==顺序结构、选择结构、循环结构== 顺序结构:程序按顺序执行,不发生跳转 选择结构:依据条件是否满足,有选择的执行相应功能 循环结构:依据条件是否满足,循环多次执行某段代码 选择结构if语句作用:执行满足条件的语句if语句的三种形式 单行格式if语句 多行格式if语句 多条件的if语句 ...原创 2020-02-02 11:55:30 · 199 阅读 · 0 评论 -
系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。||水仙花数||敲桌子||利用嵌套循环,实现九九乘法表
while循环练习案例:案例描述:系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。#include <iostream>using namespace std;//time系统时间头文件包含#include <ctime>int main() { //添加随机数种子 利用当前系统...原创 2020-02-02 11:36:10 · 8996 阅读 · 0 评论 -
c++基础知识
变量常量//1、宏常量#define day 7int main() { cout << "一周里总共有 " << day << " 天" << endl; //day = 8; //报错,宏常量不可以修改 //2、const修饰变量 const int month = 12; cout << ...原创 2020-02-01 17:52:22 · 293 阅读 · 0 评论 -
设计立方体类(求出立方体的面积和体积 分别用全局函数和成员函数判断两个立方体是否相等)
练习案例1:设计立方体类设计立方体类(Cube)求出立方体的面积和体积分别用全局函数和成员函数判断两个立方体是否相等。#include <iostream>using namespace std;//立方体类设计//1.创建立方体类//2.设计属性//3.设计行为 获取立方体的面积和体积//4.分别利用全局函数和成员函数 判断两个立方体是否相等cla...原创 2020-01-30 23:38:10 · 2149 阅读 · 1 评论 -
类和对象
C++面向对象的三大特性为:==封装、继承、多态==C++认为==万事万物都皆为对象==,对象上有其属性和行为例如: 人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳、吃饭、唱歌... 车也可以作为对象,属性有轮胎、方向盘、车灯...,行为有载人、放音乐、放空调... 具有相同性质的==对象==,我们可以抽象称为==类==,人属于人类,车属于车类4...原创 2020-01-30 21:44:44 · 212 阅读 · 0 评论 -
函数提高
函数默认参数#include <iostream>using namespace std;int func(int a, int b = 10, int c = 10) { return a + b + c;}//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值//2. 如果函数声明有默认值,函数实现的时候就不能有默认参数int...原创 2020-01-30 21:16:53 · 127 阅读 · 0 评论 -
引用
引用的基本使用#include <iostream>using namespace std;int main() { int a = 10; int &b = a; cout << "a = " << a << endl; cout << "b = " << b << endl;...原创 2020-01-30 20:53:13 · 247 阅读 · 0 评论 -
内存分区模型
C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程程序运...原创 2020-01-30 20:08:06 · 381 阅读 · 0 评论