![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C&C++学习
学习记录C&C++, 将来可能新增C#
Junior Chestnut
这个作者很懒,什么都没留下…
展开
-
VS2017社区版许可证过期问题
VS2017社区版 许可证过期问题原创 2022-09-05 23:10:33 · 1883 阅读 · 0 评论 -
编程一定要注意!!!
想开头:想结尾:想中间:想特殊!!!!原创 2021-08-09 21:44:35 · 90 阅读 · 0 评论 -
C++模板类及其使用
waiting…原创 2021-04-17 18:07:48 · 73 阅读 · 0 评论 -
编程步骤心得
写了一段时间C/C++/matlab 代码,我觉得,总体步骤或者说思路:第一步:不要写代码,写伪代码,写好架构(但是matlab使用尚短,函数用不好);自上而下。第二步:获得你要处理得数据;第三步:保存你要处理的数据;(前三部我称为数据准备工作)第四步,利用数据去完成你想要的功能:第四步最难,但是想要提高效率,前三步也要熟练。...原创 2021-04-09 11:11:41 · 99 阅读 · 0 评论 -
C/C++中static的用法完整版
https://blog.csdn.net/jsjwql/article/details/1788286转载 2021-04-02 18:05:31 · 91 阅读 · 0 评论 -
C/C++指针/数组/字符串的参数传递
1、指针1.0 指针一定要初始化,可以初始化为已有内存块的东西,或者初始化为nullptr;2.0 传递指针,就是传递地址,效率高,但是风险大,很容易修改原数据内容, 因此,在你不需要修改原数据的情况下,一定要加const修饰。2 静态数组1.0 静态数组一定要指定数组的大小(在编译期确定),或者编译器自己能算出大小 例如: int arr[] = {1,2,3};编译器自己会计算。2.0 特别注意:静态字符数组 char arr[] = {'a','b','c'}; 其length =原创 2021-04-01 17:17:33 · 242 阅读 · 0 评论 -
C/C++ 数组/指针/字符串
1 数组心态崩了,好不容易敲完,断网,没保存,第二次敲,简洁一点。1.0 静态数组:一定要有数组的大小。已经提供或者编译器自己可以计算出来; 例如: int arr[] = {1,2,3,4}; char arr[]={'a', 'd', 'f', 'e'};2.0 在参数传递的过程中,必须传递: 首地址 + length (才能知道是这个数组)3.0 同理,返回一个数组,必须返回数组的地址和数组的长度,可以用vector 或者 array;2 指针1.0 一定要初始化,可以初始化为已有的内原创 2021-03-31 12:05:38 · 85 阅读 · 0 评论 -
C/C++语言中 *p++、*++p、++*p 、(*p)++的区别
版权声明:本文为CSDN博主「走路不看路的耶耶x」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_39986161/article/details/81252523转载 2021-03-20 12:32:56 · 418 阅读 · 0 评论 -
Little key(no sort...)
(1)讲述键盘与源代码与显示屏之间的关系,中间会有shell作为缓冲。原创 2021-03-18 20:55:40 · 114 阅读 · 0 评论 -
C++析构函数和构造函数的调用次序
一、构造函数,会先调用基类的构造函数(第一基类,然后第二基类,最后再调用自己的构造函数);二、析构函数,会先析构自己的,然后再逐级向爷爷辈析构。三、关于内嵌对象:例class Camera{};(1)在构造函数时:与容器类的构造和析构贴着,方向一致。...原创 2021-03-10 22:47:00 · 259 阅读 · 0 评论 -
自编string练习以及遇到的问题
Open GL常用的回调函数*void glutDisplayFunc(void (*func)(void));注册当前窗口的显示回调函数参数:func:形为void func()的函数,完成具体的绘制操作这个函数告诉GLUT当窗口内容必须被绘制时,那个函数将被调用.当窗口改变大小或者从被覆盖的状态中恢复,或者由于调用glutPostRedisplay()函数要求GLUT更新时,执行fu...原创 2019-11-01 11:14:12 · 423 阅读 · 0 评论 -
C++多态整理
提要:1.0 声不声明成虚函数,决定了编译器是根据指针类型调用函数,还是根据对象类型调用函数; 指针类型:对应静态联编; 对象类型:对应动态联编--在运行时确定调用哪一个函数。2.0 静态联编效率更高,因为动态联编需要跟踪基类 指针或者引用指向的对象类型,这增加了额外的处理开销。1.0 继承中的同名隐藏问题:派生类中的同名函数,会隐藏基类中的同名函数; (可以用obj.Shape::toString()访问基类的成员函数) 2.0 重定义函数: The functions have the原创 2020-12-04 22:23:16 · 67 阅读 · 0 评论 -
C++多态
提要:派生类对象 可以 隐式的转换成基类的对象。2.0 将基类中的重定义函数声明为虚函数,那么继承它的子类中的重定义函数也会编程虚函数。一、定义:广义的多态: 不同类型的实体或对象,对于同一消息有不同的响应,就是OOP的多态性。目前所学,多态有两种表现形式:1.0 重载函数;2.0 子类型多态:不同的对象调用同名重定义函数,表现出不同的行为。(重定义函数,是派生类与基类中完全相同的函数,不过由于同名隐藏,构成了多态性)。如下:同一种类型的a ,p 但是却调用了不同的函数。2.0 联编(Bi原创 2020-12-03 22:13:39 · 76 阅读 · 0 评论 -
C++创建对象时的调用顺序记录
问:class A; A object; 创建这个object 调用的顺序是什么?第一步:进入构造函数。如果构造函数中有:初始化,接着会执行这个初始化,然后去检查数据成员的值。如果构造函数中没有:初始化,那么会直接转去检查数据成员的值。最后,再执行构造函数,函数体中的内容。...原创 2020-12-03 19:42:17 · 162 阅读 · 0 评论 -
C++继承学习记录
一、继承的特征:1.0 将特性从一个类,传递到另一个类;2.0 基类引用可以指向派生类对象;提要:// 使用基类的构造函数,来初始化基类的数据成员// 谁的数据成员用谁来初始化:// color(aColor), filled(aFilled) 无法使用:因为color和filled是Shape的私有成员,出了Shape,没人可以用。main() 函数文件:#include <iostream>#include "Shape.h"#include "Circle.h"i原创 2020-12-02 22:05:19 · 216 阅读 · 0 评论 -
C/C++vector容器的使用
#include <iostream>#include <vector>#include <string>using namespace std;void Print(const vector<string>& temp){ for (size_t i = 0; i < temp.size(); i++) { cout << temp[i] << " "; } cout << endl原创 2020-12-02 18:18:27 · 114 阅读 · 0 评论 -
C/C++深浅拷贝构造函数
提要:1.0 深浅拷贝,都是针对拷贝构造函数而言的。2.0 深浅拷贝的区别是:在拷贝指针类型的数据成员的时候。浅拷贝:拷贝ptr;深拷贝:拷贝*ptr.—new 一块内存存放内容。一、拷贝构造函数的声明:1.0 拷贝构造: 用一个对象初始化同类型的另一个对象。2.0 声明:Circle (Circle&);Circle (const Circle&);3.0 带有默认参数的拷贝构造函数:Circle(const Circle&, int n =1);4.原创 2020-12-02 16:15:27 · 513 阅读 · 0 评论 -
C/C++友元函数和友元类
一、关键词: friend;【注】:1.0 两个类可以互为友元;2.0 友元是C++特有的;— 这是C++的妥协。1.0 打破了C++的封装性,四大特性破其一;2.0 友元函数和友元类必须在类中声明,然后,定义对象,就可以实现对原类私有数据成员的访问!3.0 在public中声明;4.0 既然在类中声明了,所以在书写友元函数的定义时,不需要再加作用域运算符。1.0 注意: 下面是不对的,在Kid类中无法访问内部的数据成员:friend Kid;2.0 必须使用下面的情况:frien原创 2020-12-02 09:54:56 · 181 阅读 · 0 评论 -
C++类创建普通对象与类创建指针对象的区别
提要:1.0 类创建普通对象,省略。2.0 类创建指针对象:2.0.1 如果只是调用静态函数,可以不用初始化。但是调用静态函数,类名就可以直接调用,所以说,定义用类定义指针对象而不初始化,就是耍流氓,不要这么做。2.0.2 类创建指针对象后,最好的方法是:2.0.2.1 在这之前,先用类创建一个实例:即先创建一个普通对象。2.0.2.2 然后用指针对象去使用它,我想,这也是指针存在的意义。--- 这就是指针创建出来的本意。-高效,但充满风险。一、虚拟内存的定义:(来自百度百科)https原创 2020-11-28 22:31:48 · 2447 阅读 · 0 评论 -
InstanceMember和StaticMember
1.0 int Square::numberOfObijects; 是定义,定义一个类中的静态成员;且被放在静态区:2.0 由中间的图形可以看到,实例数据成员是跟随对象的,而static成员是放在静态区,你创建了8个对象,静态成员的个数依然只有一个。3.0 由1.0中可知,类中的静态数据成员,不需要创建对象,在类外,是可以直接定义并初始化的:我觉得主要是可以在类外,重新初始化。4.0 要想使用Squeue中 静态成员number, 必须在使用之前,在类外定义它:int Squeue::numbe.原创 2020-11-28 17:08:02 · 282 阅读 · 2 评论 -
const 与 constexpr
一、首先:const 修饰的对象未必是编译期常量;const int number = n;number 就不是编译期变量;const int n = 10; 编译期变量 --- 类似C语言数组,数组大小必须是编译期变量而,constexpr ---> constant expression const int cm = 4; // 编译期常量,等价于: constexpr int cm = 4;二、constexpr :用在所有被要求使用“constant exp原创 2020-11-28 15:39:27 · 209 阅读 · 0 评论 -
C++递归与迭代
一、原创 2020-11-22 19:36:38 · 63 阅读 · 0 评论 -
C/C++指针与const的自我理解
一: 指针是一个类型: 指针类型 ; 指针并不是变量。提要:(1)int a = 10;const int*aPtr = &a;首先,定义了指针类型的变量; 其次,int* aPtr;指针类型的变量,其实是定义了两个变量。一个是指针类型的变量a, 一个是普通变量 *a【注】那这么做的意义是什么呢?答: 你可以使用这个变量,但你不能修改-----这就是const 和 指针 组合的意义。(2)把 ‘*’ 读成 pointer to.(3)把const和向后紧贴着的一个类型一原创 2020-11-22 17:53:34 · 160 阅读 · 2 评论 -
C++函数重载
一、 函数的默认参数能够让你 使用不同的参数调用同一个函数;函数重载让你可以使用多个同名的函数:多参数–>一个函数(默认参数–默认参数不可跳过,必须从右至左添加默认值);多函数–>同个数,不同类型的参数(函数重载–关键是函数的参数列表,也叫做函数特征标(function signature))function signature 相同性定义:两个函数参数数目 和 类型相同,同时参数的排列顺序也相同,则表示他们的function signature 相同。即:1. 参数数目2. 参数类原创 2020-11-22 16:12:59 · 63 阅读 · 0 评论 -
C/C++参数传递
一、 对象作为参数传递原创 2020-10-29 15:31:34 · 63 阅读 · 0 评论 -
C++四种强制类型转换
转载: https://blog.csdn.net/ydar95/article/details/69822540转载 2020-10-29 15:20:56 · 73 阅读 · 0 评论 -
C++创建动态对象数组
已经建好一个Circle 类,并且对构造函数进行了重载。 // 创建一个对象数组--并进行初始化参数--使用参数列表。 Circle *c = new Circle[3]{ 1.0,2.0,3.0 }; for (size_t i = 0; i < 3; i++) { // c是一个指向对象数组的首地址,类似普通数组,c[i]已经代表对象了。不能用-》运算符,而是用点点 cout << c[i].getArea() << endl; }...原创 2020-10-29 14:34:49 · 715 阅读 · 0 评论 -
C/C++从汉字字符串中抽取一个汉字
一、汉字占有两个字节// 输出‘大’字string test1 = "大家好啊";cout << test1[0] << test1[1] << endl;原创 2020-10-25 20:13:06 · 1340 阅读 · 0 评论 -
C/C++数组指针和指针数组
一、定义:指向数组的指针常被简称为数组指针(array pointer),而具有指针类型元素的数组则被称为指针数组(pointer array)。数组指针:int (* arrPtr)[10] = NULL; // 一个指针,它指向一个有10个int元素的数组指针数组:通常值适用与字符串。char *arr[5] = {"he","lloe", "world","wo","ai"};...原创 2020-10-22 17:41:28 · 176 阅读 · 0 评论 -
C++在哪里查找函数
假设在程序的某个文件中调用一个函数,(1)如果该函数被声明为static静态的,那么只能在本文件中查找;(2)如果非静态的,编译器(包括链接程序)将在所有的程序文件中查找。如果找到两个定义将会出错(ORD原则);如果在程序文件中没有找到,编译器会在库中进行寻找。这意味着如果定义了与库函数相同的函数,编译器会率先使用你自己写的程序。【另注】:#include “头文件” 会率先在文件根目录寻找。#include <头文件>会率先在标准库目录寻找。–就是系统目录,一般在C盘。...原创 2020-10-20 16:42:17 · 1485 阅读 · 0 评论 -
C++数据类型和数据保留在内存中的时间
首先,变量是存储数据信息的,这个数据信息的生命周期如何定义?如何才能不占着茅坑不拉屎。**静态:**即在整个程序运行期间都一直存在。存储类别影响信息在文件间的共享一、不同的方案存储数据,区别就在于数据保存在内存中的时间。1.1 自动存储持续性: 在栈区,在函数定义中声明的变量(包括函数参数)—是自动的。他们在程序开始执行其所述的函数或者代码块时被创建,在执行完函数或代码块时,他们使用的内存被自动释放。1.2 静态存储持续性:全局变量和静态变量。1.3 线程存储持续性:将计算放在可并行处理的不同线原创 2020-10-20 16:35:57 · 232 阅读 · 0 评论 -
C/C++多线程总结
waiting to adding…原创 2020-10-17 18:22:49 · 56 阅读 · 0 评论 -
C/C++左值引用和右值引用
https://zhuanlan.zhihu.com/p/97128024一、左值引用先看一下传统的左值引用。int a = 10;int &b = a; // 定义一个左值引用变量b = 20; // 通过左值引用修改引用内存的值左值引用在汇编层面其实和普通的指针是一样的;定义引用变量必须初始化,因为引用其实就是一个别名,需要告诉编译器定义的是谁的引用。int &var = 10;上述代码是无法编译通过的,因为10无法进行取地址操作,无法对一个立即数取地址,因转载 2020-10-07 17:00:54 · 121 阅读 · 0 评论 -
C++多线程 参数传递
https://www.cnblogs.com/xiaoshiwang/p/9867091.html转载 2020-10-07 16:31:31 · 969 阅读 · 0 评论 -
C++取前n个字符和整数的后n位数
/* (1) 分离字符串的前n位,即获取字符串的前n个字符 (2) 获取整数的前n个数*/#include <iostream>#include <string>#include <vector>using namespace std;string getNchar(string str, int n);int getNNumber(int number, int n);void main(){ cout << "输如一个字符串"原创 2020-10-06 21:39:00 · 2613 阅读 · 0 评论 -
C++默认参数及其注意事项
/* (1) 使用默认参数,可以极大增强函数的灵活性 (2) 使用默认参数的注意事项: 2.1 : 要没某个参数添加默认值,则必须为它右边的所有参数提供默认值! 2.2 : 在调用时,不能跳过任何参数,a(1,2, ,3) 如果2覆盖默认参数,后面的默认参数不调用是错误的 a(1,2)是可以的,就是不能跳着覆盖 (3) 一般使用默认参数,会牵扯到动态内存分配,即new 和 delete;*/#include <iostream>const int ArSize原创 2020-09-16 16:57:46 · 312 阅读 · 0 评论 -
C++与数据合并
一、字符串与字符串合并1. 这个比较简单:(1)string str1 = "hello"; string str2 = "world"; string str3 = str1 + ' '+ str2; =hello world2. 对于字符数组,可以直接转化为string类的字符串:char name[40] = "I LOVE SOMETHING YOU DONT LIKE";string tempName = name; 然后直接使用1的方式合并; 二、字符串与非字符串的合并1.原创 2020-09-15 17:00:20 · 1175 阅读 · 0 评论 -
C++与输出
1.小黑屏输出流 cout 相关解释:cout<<fixed;——fixed就是用一般的方式输出浮点数,而不是科学计数法,例如0.001—和1e-003cout.setf(ios::fixed)——用定点格bai式显示浮点数;cout.setf(ios::showpoint)——显示浮点数小数点后的0;cout.precision(2)——设置精确度zhi为2位并返回上一次的dao设置。2.文件输出流Fout同cout相似:基本上都是一样的,只是输出的位置不同出现一点差别。不同点原创 2020-09-14 11:09:55 · 201 阅读 · 0 评论 -
函数指针的创建与使用
1、 creat a function pointer:for example:// 函数指针 名字为:function1, // 指针function1 指向一个函数,这个函数返回值为void, 需要形参(int a, int b);void (*function1)(int a ,int b);2、creat a function pointer arrayfor instance:// interpretation v interpret:// 可以这么读:// f是一个存储3个指原创 2020-08-13 12:23:53 · 628 阅读 · 0 评论 -
c++容器array / vector / queue的用法记录
1、array类:大小固定的存储,static binding,编译时控制,使用array类更安全高效。用法:#include <iostream>#include <array> using std::array;......// array<type,quantity>name;array<float,20>arr;2、vector类:大小不固定的存储,自动调整长度,运行中控制,dynamic binding。类似堆栈操作,先进后出原创 2020-08-12 19:10:54 · 327 阅读 · 0 评论