C++
Cherry_keven
是你的坚持与努力,使你超越了昨天的自己
展开
-
实践活动心得
通过这次的的社会实践活动,我们逐步了解了社会,开阔了视野,增长了才干,并在社会实践活动中认清了自己的位置,发现了自己的不足,对自身价值能够进行客观评价。这次实践活动,丰富了我们的实践经验,提高了我们的团队合作能力,使我们通过这次站店实践更加了解社会,这次实践活动意义深远,对我们的帮助享用一生。经历了将近一周的站店实践,我感慨颇多,我们见到了社会的真实一面,实践生活中每一天遇到的情况还在我脑海里回旋,它给我们带来了意想不到的效果,社会实践活动给生活在都市象牙塔中的大学生们提供了广泛接触社会、了解社会的机会。.原创 2022-08-15 14:30:56 · 239 阅读 · 1 评论 -
VS调试及快捷键
Ctrl + F5 运行F5进入调试F10逐行调试光标移动到行首: Home光标移动到行尾: End原创 2021-07-14 17:05:20 · 242 阅读 · 0 评论 -
c++左值和右值、 左值引用与右值引用
c++ 左值引用与右值引用——原左值和右值综述C++对于左值和右值没有标准定义,但是有一个被广泛认同的说法:可以取地址的,有名字的,非临时的就是左值;——变量、返回引用、const不能取地址的,没有名字的,临时的就是右值;——10、函数返回值可见立即数(10),函数返回的值(.没名字、临时值)等都是右值;而非匿名对象(包括变量),函数返回的引用,const对象等都是左值。详细1、左值指既能够出现在等号左边,也能出现在等号右边的变量;右值则是只能出现在等号右边的变量。int a; //原创 2021-07-13 21:19:09 · 330 阅读 · 0 评论 -
引用作为函数的返回值
引用作为函数的返回值——原版1、引用作为函数的返回值时,必须在定义函数时在函数名前将&2.用引用作函数的返回值,的最大的好处是在内存中不产生返回值的副本float temp;float fn1(float r){ temp=r*r*3.14; return temp;} float &fn2(float r){ //返回引用 temp=r*r*3.14; return temp;}int main(){ float a=fn1(5.0原创 2021-07-13 20:52:29 · 4958 阅读 · 1 评论 -
C++指针变量,初始化指针是否需要分配内存空间
指针本质地址指向变量的指针,是变量中数据内存的地址,指向函数的指针是代码内存的地址,指向数据的指针指向数组开始位置的地址。p=4;//报错p = (int *)4;//可以指针变量和普通变量的区别实质就是个变量,指针完整的应该叫指针变量为什么需要指针可以实现对其他对象的间接访问高级语言如Java、C#等没有指针,那他们怎么实现间接访问?答案是语言本身帮我们封装了指针使用定义、绑定指针、解引用(1)当我们int *p定义一个指针变量p时,如果p是局部变量,所以也道循C语言局部变原创 2021-07-11 19:49:17 · 2543 阅读 · 0 评论 -
for (auto aa : Str)遍历字符串、数组等
vector<unsigned char> Vec1;string Str = { "123456" };cout << "String data is: " << endl;for (auto aa : Str)//定义一个任意类型的变量aa,遍历Str cout << aa;cout << endl;for (int i = 0; i < Vec1.size(); i++){ cout << Vec1[i原创 2021-07-10 14:24:14 · 474 阅读 · 0 评论 -
声明和定义中分号的使用
头文件声明因为是一条语句,必然是加分号的。void setGround();//页面设置void getValue(); //获取ui输入值源文件定义成员函数的代码实现,不需要加分号for、while循环同理void MainWindow::setGround(){ qDebug() << "setGround";}for、while循环加分号,表示这个循环是空语句,除了执行for()括号里的,什么都不干,然后就执行下一行。不加分号,那for循环后面的prin原创 2021-07-01 13:45:57 · 721 阅读 · 0 评论 -
内存分布
对于一个完整的程序,在内存中的分布情况如下图: 1、栈区heap:由编译器自动分配释放,像局部变量,函数参数,都是在栈区。会随着作用于退出而释放空间。2、堆区stack程序员分配并释放的区域,像malloc©,new(c++) ,指针,成员变量3、全局数据区(静态区)(个人觉得静态变量既然和全局变量存放在一起,说明性质非常接近)全局变量和静态变量的存储是放在一块的:初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束释放。4、代码区原创 2021-05-17 21:33:26 · 1415 阅读 · 1 评论 -
链表初始化C++
#include <iostream>using namespace std; //节点类 class Node { public: int data; //数据域 Node *next; //指向下一个节点的指针 Node(int _data) { //显式构造函数,每次对新声明的节点类的对象进行初始化 data = _data; next = NULL; } }; //链表类 class LinkList { publi原创 2021-05-13 16:10:59 · 3708 阅读 · 1 评论 -
程序编译4个过程——预处理,编译,汇编,链接
预处理头文件打开来插入到我们本身的程序宏进行替换删除注释删掉#ifdef、#endif编译程序是不是有问题是不是有一些语法错误,把c程序——>汇编语言。汇编汇编语言变成机器语言链接某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);在程序中可能调用了某个库文件中的函数...原创 2021-05-07 16:11:31 · 440 阅读 · 0 评论 -
int变量初始化、char数组初始化、指针初始化、初始化指针不分配空间
初始化指针不分配空间sizeof函数在预处理阶段就已经做好,指针4个字节指的是如果分配需要这么多,但是没有分配,*pa值的变化不能说明问题。因为pa只是指针,修改的是指向的地址int a = 1;int* pa = &a;cout << *pa << sizeof(pa);//1 4int b = 2;*pa = b;cout << *pa;//2char数组初始化char c[] = "asd";char* pc = c;//此处没有&原创 2021-05-06 17:10:24 · 325 阅读 · 0 评论 -
char和char*
相同点1、两种类型都可以对应一个字符串char * a="string1"; 字符指针——将字符串的首地址赋值给字符指针,可让字符指针指向一个字符串。1、"string1"是一个字符串常量,保存在常量存储区。因为赋值给了s1[],而s1[]是自动存储类型的变量,所以拷贝了一份到栈中。2、s1实际上是一个指针常量。其指向的地址不能变,但能通过s1改变其指向地址的值。char b[]="string2"; printf("a=%s, b=%s", a, b); 字符数组(char数组)1、原创 2021-04-24 17:40:54 · 3041 阅读 · 0 评论 -
return 四种类型、continue、break区别
return仅在void函数中,表示程序从此处结束——break、terminatereturn 0int函数——程序正常终止return 1程序正常终止return -1一般用在子函数结尾,程序正常终止原创 2021-04-18 15:47:05 · 582 阅读 · 0 评论 -
C++、Qt不同类之间、函数之间传参的五种方式
指针(类和对象)信号和槽全局变量、函数专门写一个函数用来传参原创 2021-03-30 21:46:08 · 1528 阅读 · 3 评论 -
explicit关键字
implicit隐式,默认不写explicit显式,构造函数中写入则代表无法进行隐式转换,必须按照规定的格式进行转换exampleexplicit.hclass String{public: explicit String(int n) {}; String(const char *p) {};};explicit.cppstatic void test1(){ String s1 = 'a'; // 错误:不能做隐式char->String转换 String s2原创 2021-03-29 16:23:02 · 77 阅读 · 0 评论 -
实参与形参
实参类似报志愿,可以随便写,但是要是确定的值(数字,数组,字母)不需要写类型,也不用全都是变量/*MainWindow.cpp*/ pso = new PSO(getpsize, "func_16_Ziz", 0, 0, getmaxgen, getpoint, getcycle);/*pso.cpp*/xc_result = new Result(psize, point);粒子群初始化时,调用适应度函数func_16_Ziz();pop_row是一个确定的值,代入到result类进行原创 2021-03-28 19:35:42 · 255 阅读 · 0 评论 -
C++ Qt 在A类使用B类的变量
A类使用B类的变量不同类之间相互使用examplemain.hclass1.h文件:class1.cpp文件:class2.h文件:class2.cpp文件:结果不同类之间相互使用class2类中使用class1类的信息——class2与class1建立联系a、class2中添加class1的头文件以及成员变量(私有或者共有)b、分配空间(如果是指针形式,需要分配空间).h#include "vector_test.h"public: Vector_test *vector_test;原创 2021-01-21 11:39:33 · 941 阅读 · 0 评论 -
数组指针和指针数组
数组指针指向数组的指针常被简称为数组指针原创 2021-01-12 21:20:20 · 100 阅读 · 0 评论 -
常量指针和指针常量
常量指针指针指向可以变,但是指向的值不可以通过指针修改const int *p = &a; //常量指针常量指针本质是指针,并且这个指针是一个指向常量的指针指针指向的变量的值不可通过该指针修改,但是指针指向的值可以改变。int a,b;const int *p=&a //常量指针//那么分为一下两种操作*p=9;//操作错误,赋值也是不可以的p=&b;//操作成功指针常量常量指针指向的地址不可以改变,地址里的内容可以改变int * const p /原创 2021-01-12 21:14:17 · 154 阅读 · 0 评论 -
C++ 引用、引用作为函数参数
引用C++ 用的引用就如同C语言的指针一样重要,但它比指针更加方便和易用,有时候甚至是不可或缺的。同指针一样,引用能够减少数据的拷贝,提高数据的传递效率。参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。...原创 2021-01-11 15:39:24 · 918 阅读 · 0 评论 -
C++指针概念、指针变量作为函数参数进行传参
指针函数的参数不仅可以是整数、小数、字符等具体的数据,还可以是指向它们的指针。用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁。像数组、字符串、动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传入函数内部,只能传递它们的指针,在函数内部通过指针来影响这些数据集合。……startTest();……void MainWindow::startTest(){ qDebug() <<原创 2021-01-11 15:39:12 · 6489 阅读 · 0 评论 -
C++ minmax_element求极值
auto res = minmax_element(nums.begin(), nums.end()); cout << "最小值:" << *(res.first); cout << "最大值:" << *(res.second);原创 2020-12-26 15:37:12 · 182 阅读 · 0 评论 -
C++ STL迭代器(iterator)
遍历容器中存储的元素,而实现此操作,多数情况会选用“迭代器(iterator)”来实现。迭代器和 C++ 的指针非常类似,它可以是需要的任意类型,通过迭代器可以指向容器中的某个元素,如果需要,还可以对该元素进行读/写操作。...原创 2020-12-24 20:54:09 · 129 阅读 · 0 评论 -
C++ 数组、字符串、指针之间联系详解
数组1、定义存储多个同类型的值。int a[5];——是int数组,而不是数组5——整型常数、const值(变量)、常量表达式const int n = 5;char a[n] = { "asd" };cout << a;2、初始化定义数组时,才能初始化。两种方式:列表{} ——也可以不用{}下标赋值//列表int a[10] = {1,2,3};char a[] = "asd asd";//下标赋值int a[5] = 4;int a[10] = {原创 2020-12-20 18:38:54 · 329 阅读 · 0 评论 -
C++、Qt中,字符型数组和非字符型数组、vector容器的输出,
核心C++中输出数组数据分两种情况:字符型数组和非字符型数组字符型数组cout << 数组名——字符串//以字符的形式初始化char str[10] = { '1','2' };//12//以字符串的形式初始化char str_array[10] = {"jiang"};//jiangcout << str << endl << str_array << endl; cout << 强制类型转换——地址char s原创 2020-12-19 17:07:43 · 2243 阅读 · 1 评论 -
append和push_back在字符串上的用法、string、string转char*
appendappend()函数:是向string 的后面追加字符或字符串。1、在字符串的末尾添加字符串str。string s1="hello";string s2= "the";string s3="world";s1.append(s2); //把字符串s连接到当前字符串的结尾s1+=s3;s1="hello the";s1="hello the world";2、符串的末尾添加字符串str的子串string s1 = "hello";string s2 = "the w.原创 2020-12-17 21:21:36 · 2042 阅读 · 1 评论 -
static、const、char、堆区和栈区的分配
核心堆区——局部变量(为例)栈区——静待成员变量(为例)头函数class int_string{public: int_string(); const int fixed_int = 1; //静态成员变量——当前源文件有效;成员变量——当前的定义的函数有效;全局变量——全部源函数; //加入const的变量就是常量,不可以再被初始化 //正常来说const就够定义二维数组的长度,但是static是定义在类里面的,不是定义在对象里的;程序初始化的时候会原创 2020-12-15 10:47:57 · 818 阅读 · 0 评论 -
Qt C++中声明、定义和初始化一维、二维数组(vector容器)(二)
头文件class Vector_test{public: Vector_test(); vector<int> one; vector<vector<double> > two; vector<int> one_list{1,2,3};// 初始化列表的方式(构造函数定义时)给成员变量赋值,是可以的// int psize = 1;// vector<double> g_best(原创 2020-12-14 23:28:08 · 1927 阅读 · 0 评论 -
C++类和对象、私有无法被其他类调用
_name是私有的,所以在person类外不能使用,而_age,Eat()是公有的,所以在类外可以直接使用原创 2020-11-23 22:13:39 · 549 阅读 · 0 评论 -
C++中,new一个对象,有无括号,括号中this含义,堆区和栈区 声明和定义 自动初始化
小括号是用来指定初始化参数,用于类指针时,就是指定调用哪个构造函数。1 有小括号时,小括号中可以有若干参数,也可以没有参数。比如ptest = new test(); 这样在构造时就会调用无参构造test();ptest = new test(1); 就会调用构造函数test(int),即一个整型参数的构造函数。2 没有小括号时,默认调用无参构造。即ptest = new test;和ptest = new test();是一样的。加括号调用没有参数的构造函数,不加括号调用默认构造函数或原创 2020-11-20 14:20:03 · 1791 阅读 · 0 评论 -
Qt中 QObject *parent = Q_NULLPTR
public: MainWindow(QWidget *parent = nullptr);Qt类的构造函数都会有一个parent参数。这个参数通常是QObject* 或者是 QWidget* 类型的。很多情况下它都会有一个初始值0,因此,即便你不去给它复制也没有丝毫的问题。作用parent参数指明了组件的父组件当父组件delete时,Qt可以保证所有子组件——也就是parent指针指向这个组件的所有组件——都会被正确的delete掉。这是Qt能够帮助我们管理一部分内存的原因所在。Qt原创 2020-11-20 13:36:22 · 3018 阅读 · 0 评论 -
Qt C++中,成员变量的声明和定义及初始化——int类型、vector容器
核心:一维数组和二维数组仅仅可以通过push_back增加成员(初始化列表除外)vector_test.hclass Vector_test{public: Vector_test(); vector<int> one; vector<vector<double> > two; // 初始化列表的方式(构造函数定义时)给成员变量赋值,是可以的 vector<int> one_list{1,2,3};原创 2020-11-06 14:19:57 · 3772 阅读 · 0 评论 -
Qt C++代码注释以及取消注释、整体左移、自动对齐
1.向右:将要移动的代码选中,然后按Tab键2.向左:将要移动的代码选中,然后按Shift+Tab键原创 2020-10-27 17:24:59 · 15403 阅读 · 0 评论 -
C++Qt中,的 局部变量、全局变量的声明、定义和初始化
全局变量全局变量在整个源文件的作用域都是有效的,只需要在一个源文件中定义全局变量,在其他不包含全局变量定义的源文件中用extern关键字再次声明这个全局变量即可。也可以在一个源文件中定义这个全局变量,在头文件中用extern关键字再次声明这个全局变量,如果其它源文件要用到这个全局变量,只需要包含这个头文件就可以直接使用了class1.h文件:#include <stdio.h>#include <iostream>using namespace std;extern原创 2020-10-26 17:02:55 · 7210 阅读 · 2 评论 -
C++ Qt中 类的构造函数 & 析构函数
类的构造函数类的构造函数是一个特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。#include <iostream> using namespace std; class Line{ public: void setLength( double len ); double getLength( void ); Line(); // 这是构造函数原创 2020-10-26 14:12:36 · 7059 阅读 · 0 评论 -
Qt C++中声明、定义和初始化一维、二维数组(vector容器)(一)
变量或函数的声明、定义声明:不需要编译器为其分配内存空间;定义:要求分配内存空间。声明是告诉编译器,这个变量或函数已经在程序中存在。对变量而言,声明和定义一起进行:int a;//完成声明和定义对函数而言,声明和定义可以分离:声明:void data_func();//可以对一个变量多次声明,不会报错void data_func();void data_func();定义:void data_func(){};一维数组的声明和初始化1、设置数组长度的默认初始g_best为原创 2020-10-21 14:32:40 · 21750 阅读 · 4 评论