- 博客(31)
- 收藏
- 关注
原创 一维激波C++编程
#include<iostream>using namespace std;#define Gamma 1.4;//比热比 double R = 287.0;//理想气体常数J/kg/Kconst int Nnode = 101;double* CalDem(double* temp, double* pre){ double *dem = new double [Nnode]{ 1 }; for(int i=0; i < Nnode;i++) { dem[i] .
2022-04-23 21:19:43 1225
原创 C++ 标准模板库-STL
背景在C++模板的时候,其中心思想是通过定义模板数据类型,实现自适应输入的数据类型(函数的传参,类的成员数据类型)。那么进一步提升,对模型数据结构和算法进行封装成一个标准的库,这样大家都可以调用。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。组件STL 有三大组件,实现数据管理,访问,操作:容器 算法 迭代器 数据集合管理 对数据操作 遍历数据,
2022-04-20 09:00:16 1083
原创 C++数据读入数据到数组
难点:C++ 在定义数组的时候,必须指定确定的长度,因此数组大小不能是变int a;int b[a]; //会报错C++标准模板(STL)vecto可以实现动态数组意味着在添加元素时会自动调整其大小。#include<iostream>#include <vector>using namespace std;int main(){ vector<int> v1; int a; while (cin>>a ) { v1.
2022-04-20 08:26:43 3616
原创 C++符号重载
背景C++原始的符合使用会有一些限制,例如"+"不能用于两个对象 相加,因此重载符号的目的是扩大原始符号的使用范围。语法符号重载本质是重新定义一个函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的...
2022-04-17 09:06:20 1133
原创 C++类模板
背景类模板跟函数类似,通过声明模板参数,在调用类的时候,成员数据类型自动跟实参一致。语法template <class T> //模板参数 定义class calc{private: T A; T B;};calc<int> Calc1(1 ,2);// 定义成员函数类型例子#include<iostream>using namespace std;template <class T>class calc{
2022-04-15 22:50:47 389
原创 C++函数模板
背景调用同一个函数的时候,只是形参接收的实参的数据类型不同,此时可以用函数重载修改形参的数据类型,但可以用函数模板一劳永逸解决此问题,可以实现形参数据类型根据实参来改变。语法:template <class T>T Large(T a, T b){ return (a > b) ? a : b;}函数模板与函数重载//函数重载#include<iostream>using namespace std;int Large(int a, in
2022-04-15 22:24:01 403
原创 C++数据读入n个数到数组
难点:C++ 在定义数组的时候,必须指定确定的长度,因此数组大小不能是变int a;int b[a];但New 指定数组长度的时候可以用变量。#include<iostream>using namespace std;int main(){ int x; cin >> x ; int* a=new int[x]; for (int i = 0; i < x; i++) { cin >> a[i]; } cout <..
2022-04-15 22:06:02 4383 1
原创 C++多态
多态定义多态是C++面向对象三大特征之一:多态分为两类: 静态多态:函数重载 和 运算符重载属于静态多态,复用函数名 动态多态:派生类和虚函数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定 - 编译阶段确定函数地址 动态多态的函数地址晚绑定 - 运行阶段确定函数地址 ...
2022-04-10 08:08:59 409
原创 C++函数重载
重载定义函数和运算符都可以重载,以提供代码的复用性。函数重载函数重载满足条件: 同一个作用域下 函数名称相同 函数参数类型不同 或者 个数不同 或者 顺序不同 注意:函数的返回值不可以作为函数重载的条件#include<iostream>using namespace std;void func(){ cout << "原函数" << endl;}void func(int a){ cout <<
2022-04-09 21:50:50 567
原创 C++引用
引用定义对变量明取别名int a = 10; int& b = a;#include<iostream>using namespace std;int main(){ int a = 10; int& b = a; cout << a << endl; cout << b << endl; int c = 20; b = c; cout << a << endl; c
2022-04-09 19:09:47 399
原创 c++拷贝
拷贝构造函数调用时机C++中拷贝构造函数调用时通常有三种情况 使用一个已经创建完毕的对象来初始化一个新对象 值传递的方式给函数参数传值 以值方式返回局部对象 示例:#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//拷贝构造函数调用时机class Person{public: Person() { cout <
2022-04-04 11:23:32 995
原创 C++继承
1.定义继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易,也达到了重用代码功能和提高执行效率的效果。这个已有的类称为基类,新建的类称为派生类。#include<iostream>using namespace std;class Box{public: int Lenght{ 1 }; int width{ 1 }; int height{ 1 }; Box(int x, int y, int z) :Lenght{ x }, width{
2022-04-04 10:44:01 737
原创 C++类的静态成员
1.定义在成员前添加static定义静态成员,静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化,同时在外部访问静态成员也用::。int Box::count = 0;//对类的静态成员初始化 cout << Box::count<< endl;//访问类的静态成员#inc
2022-04-04 10:05:25 491
原创 指向类的指针
1.定义跟指针定义类似定义指向类的指针,需要使用成员访问运算符 ->。2.示例#include<iostream>using namespace std;class Box{private: int Lenght{ 1 }; int width{ 1 }; int height{ 1 };public: explicit Box(int x, int y, int z) :Lenght{ x }, width{ y }, height{ z }{} //构
2022-04-04 09:46:01 298
原创 栈机制-内存管理
1.内存分区C++程序执行时,,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理; 全局区:存放全局变量和静态变量以及常量; 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等; 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 2.程序运行前在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域-代码区和全局区2.1代码区:存放 CPU 执行的机器指令代码区是共享的,共享的.
2022-04-03 22:53:38 265
原创 C++类嵌套
1.类嵌套定义C++的类中的可以是另一个类的成员class A { }class B { A a;}注意:1、当类作为另一个类的成员时,先构造类的成员的类,再构造自身。2、析构函数,先执行本身,再执行成员对象类。遵循栈的先进后出的原则。2.示例#include<iostream>#include<string>using namespace std;class shoe{public: string color; shoe
2022-04-03 19:10:55 3049
原创 this指针
比较两个成员的大小1)普通函数#include<iostream>using namespace std;class Box{private: int Lenght{ 1 }; int width{ 1 }; int height{ 1 };public: explicit Box(int x, int y, int z):Lenght { x }, width { y }, height { z }{} //三形参的构造函数 int volume...
2022-04-03 16:07:15 763
原创 C++友元
1. 友元定义类的友元函数是定义在类内部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。 友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend2.友元函数#include<iostream>using namespace std;
2022-04-03 10:27:07 807
原创 构造函数和析构函数
1. 构造函数构造 函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。给类私用和受保护成员批量初始化,如下#include<iostream>using namespace std;class Box {private: int Lenght{ 1 }; int width{ 1 }; int height{ 1 };public: Box(int x, int y, int z) //构造函数赋值,也可以用函数赋值 { Le
2022-04-02 10:06:24 805
原创 类的访问修饰符
1/类的访问修饰符定义一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。成员和类的默认访问修饰符是 private。class Box { public: // 公有成员 protected: // 受保护成员 private: // 私有成员 };2/ public成员公有成员在程序中类的外部是可访问的。可以直接数组设置和
2022-04-02 09:09:41 2009
原创 C++内联函数
1 概念 影响性能的一个重要因素是内联技巧,内联函数也可称为内嵌函数。在C++中,函数调用需要建立栈环境,进行参数复制,保护调用现场,返回时,还要进行返回值复制,恢复调用现场。这些工作都是与完成特定任务的操作无关的额外开销。程序效“率由于该项工作而受到影响,所以,流行的CPU都已经将函数调用的额外工作硬件化了,以此来减少运行开销。尽管如此,调用工作还是有一些微小的开销的。//非内嵌式函数#include<iostream>using namespace std;bool...
2022-04-01 08:37:53 259
原创 C++ 类基本定义
1、类定义及成员访问#include<iostream>using namespace std;class RECT {public: int top{ 1 }; int bottom{ 1 };};int main(){ RECT aRect{ 3, 4 }; //类对象初始化 RECT* PaRect; PaRect = &aRect; cout << (*PaRect).top; //访问对象成员 cout << PaR
2022-03-30 08:44:45 500
原创 C++ 结构体
1、结构体定义用结构体定于如下图位置#include<iostream>using namespace std;struct RECT { int top{ 1 }; int bottom{ 1 }; int left{ 1 }; int right{ 1 };}; void MoveRECT (RECT &aRect,int x, int y) //直接引用实参进行位置移动 { aRect.top = aRect.top + y; aRe
2022-03-29 21:49:16 914
原创 各种类型变量初始化
如果变量不初始化,那变量就是上次程序所占的值,会一起变量数值错误,特别是指针。1、变量初始化int a=1; //直接赋值初始化int a(1) //函数表达法初始化int a{1} //列表初始话,目前推荐形式,这样其他可以跟其他类型的初始化统一起来2、数组初始化int arr1[5] {1 ,2 ,3 ,4,5} // 也可以用上面几种初始化int arr2[5] {} // 默认初始化为03、指针初始化int a {} 或者{nullptr} // 指向地址零
2022-03-29 09:56:46 1642
原创 函数定义与传参
1、参数传递机制2、传递实参指针3、传递数组实参4、引用实参int add(int& num){ num += 1; return 0;}
2022-03-23 20:53:16 157
原创 new和delete的用法
一.new用法:1.1. 运算符new1. new int[n] 开辟字符数组空间分配int类型的n个大小的内存空间,并用默认构造函数来初始化这些变量,返回一个指向该数组的存储空间的首地址;char * p=new char[]("Hello"); //error分配一个char(1字节)的空间,用"Hello"来初始化,这明显不对char* p=new char[6];strcpy(p,"Hello"); //或者默认构造函数来初始化char* p=new char[6]...
2022-03-23 11:10:05 1858
原创 3.4 C串与string
3.4 .1 C串1、c串以整数0作为结束2、c 串装入数组存储如下:char str="Hello!"; //c 串装入数组3.42 字符指针与字符数组char *str="Hello!"cout<<str // 显示 Hellocout<<*str //显示 H输出字符指针就是输出整个字符串,而间引str就是首地址对于的空间。...
2022-03-21 22:46:38 296
转载 C++链表
链表是由一系列连接在一起的结点构成,其中的每个结点都是一个数据结构。链表的结点通常是动态分配、使用和删除的,允许链表在程序运行时增大或缩小。如果需要将新信息添加到链表中,则程序只需分配另一个结点并将其插入到系列中。如果需要从链表中删除特定的信息块,则程序将删除包含该信息的结点。链表对数组和矢量的优点尽管链表的编码和管理比数组更复杂,但它们有一些明显的优势。首先,链表可以容易地扩大或缩小。实际上,程序员并不需要知道链表中有多少个结点。它们只是根据需要在内存中创建。有人可能会争辩说,链表并不优于矢量
2022-03-18 12:51:20 4482
原创 3 .7指针
1、指针定义int *p=new int(50) ;// 定了一个指针变量,指向一个新空间,并对这个新空间存值;int **ip=;//
2022-03-18 12:08:36 592
原创 C++学习笔记
目录1、指针2、类3、算法1、指针https://blog.csdn.net/wjinjie/article/details/1083813702、类3、算法
2022-03-18 11:04:48 373
转载 C/C++中new的使用规则
C/C++中new的使用规则本人未重视new与指针的使用,终于,终于在前一天船翻了,而且没有爬上岸;故此,今特来补全new的用法,及其一些规则;话不多说C++提供了一种“动态内存分配”机制,使得程序可以在运行期间,根据实际需求,要求操作系统临时分配一片内存空间用于存放数据;通过new运算符来实现;new实现一维指针:1 int * P; 2 P = new int; //开辟一个存放整数的空间,并返回一个存储空间的地址(即指针);3 * P =
2022-03-18 09:30:14 646
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人