C++
Jasscical
github:github网址/jasscical
gitee:gitee网址/jasscical/
记录个人学习经历,积少成多,水到渠成。
展开
-
linux下使用C++笔记
1、使用gcc编译C++文件gcc test.cpp -lstdc++ -o testg++ -std=c++11 -o test test.cpp原创 2020-10-11 10:00:14 · 96 阅读 · 0 评论 -
(C++)容器篇
本文为个人学习笔记积累,可能并不全面,为节约您的时间,可以选择绕道~1.dequedeque用法,如:定义:deque<int> queAPI:队首front()、队尾back()、弹出队首pop_front()、弹出队尾pop_back()push_back(),放进队尾2.queue定义:queue<int> queAPI:push(int x) pop() front()3.stack定义:stack<int> ..原创 2020-09-18 11:17:18 · 95 阅读 · 0 评论 -
(C++)字符串操作
用于积累自己经常用上的操作~string strchar ch1.翻转字符串①reverse( str.begin(), str.end() ) 没有返回值②string new_str( str.rbegin(), str.rend() ) 有返回值2.清空字符串①str.clear()②str = ""3.字符与数字之间转换①to_string(int a) 数字 -> 字符串 ,如 9 -> "9"②...原创 2020-07-19 18:45:08 · 367 阅读 · 0 评论 -
(C++笔记)_24预处理器
C++预处理器预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾。我们已经看到,之前所有的实例中都有#include指令。这个宏用于把头文件包含到源文件中。C++ 还支持很多预处理指令,比如 #include、#define、#if、#else、#line 等,让我们一起看看这些重要指令。#define 预处理#define 预处理...原创 2020-06-17 10:04:52 · 141 阅读 · 0 评论 -
(C++笔记)_23命名空间
命名空间假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。因此,引入了命名空间这个概念,专门用于解决上面同名冲突的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了原创 2020-06-16 10:12:08 · 222 阅读 · 0 评论 -
(C++笔记)_22动态内存
动态内存了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分:栈:在函数内部声明的所有变量都将占用栈内存。 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。如果您不再需要动态分配的内存空间,可以使用delete运算符,删除之前由 new 运算符分配的内存。new 和 delete 运算符double* ..原创 2020-06-16 09:21:34 · 172 阅读 · 0 评论 -
(C++笔记)_22异常处理
C++异常处理异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。throw:当问题出现时,程序会抛出一个异常。这是通过使用throw关键字来完成的。 catch:在您想要处理问题的地方,通过异常处理程序捕获异常。catch关键字用于捕获异常。 try:try块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch ...原创 2020-06-15 22:38:26 · 207 阅读 · 0 评论 -
(C++笔记)_21文件和流
iostream标准库,它提供了cin和cout如何从文件读取流和向文件写入流呢?用到 C++ 中另一个标准库fstream要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 <iostream> 和 <fstream>。即:#include <fstream>#include <iostream>打开文件在从文件读取信息或者向文件写入信息之前,必须先打开文件。ofstream和fstrea...原创 2020-06-15 22:23:50 · 135 阅读 · 0 评论 -
(C++笔记_面向对象)_20重载
C++ 重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定**多个定义**,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法**具有相同名称的声明**,但是它们的**参数列表和定义(实现)不相同。**C++ 中的函数重载在同一个作用域内,可以声明**几个功能类似的同名函数**,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。**不能仅通过返回类型的不同**来重载函数。下面的实例中,同名函数 print() 被用于输原创 2020-06-15 21:55:12 · 106 阅读 · 0 评论 -
(C++笔记_面向对象)_19继承
访问控制和继承派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。我们可以根据访问权限总结出不同的访问类型,如下所示:访问 public protected private 同一个类 yes yes yes 派生类 yes yes no 外部的类 yes no no 一个派生类继承了所有的基类方法,但下列情况除外:基类的构造函数、析构...原创 2020-06-15 21:55:24 · 228 阅读 · 0 评论 -
(C++笔记_面向对象)_18this 指针类的静态成员
1.C++类的静态成员我们可以使用static关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符::来重新声明静态变量从而对它进行初始化,如下面的实例所示。下面的实例有助于更好地理解静态成员数据的概念:#include &...原创 2020-06-11 21:47:49 · 204 阅读 · 0 评论 -
(C++笔记_面向对象)_17this 指针
C++this 指针在 C++ 中,每一个对象都能通过this指针来访问自己的地址。this指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。友元函数没有this指针,因为友元不是类的成员。只有成员函数才有this指针。下例子中,this指针int compare(Box box) { return this->Volume() > box.Volume(); }完整实例如下:#in...原创 2020-06-11 21:32:36 · 118 阅读 · 0 评论 -
C++笔记_面向对象)_15友元函数、友元类
C++友元函数类的友元函数在类的外部定义 ,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。假如A中声明B是它的友元,则B可以访问A的一切成员。简记:A说B是我兄弟,家里的东西随便拿哈(有点引狼入室的感觉)友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字..原创 2020-06-11 15:40:54 · 138 阅读 · 0 评论 -
(C++笔记_面向对象)_14拷贝构造函数
#include <iostream> using namespace std; class Line{ public: int getLength( void ); Line( int len ); // 简单的构造函数 Line( const Line &obj); // 拷贝构造函数 ~Line(); // 析构函数 private:.原创 2020-06-11 15:23:38 · 214 阅读 · 0 评论 -
(C++笔记_面向对象)_14类构造函数 & 析构函数
C++类构造函数 & 析构函数类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。分为带参数以及不带参数的构造函数不带#include <iostream> using namespace std; class Line{ public: void setLength( double.原创 2020-06-11 14:38:49 · 162 阅读 · 0 评论 -
(C++笔记_面向对象)_13类访问修饰符public\private\protected
1.C++类访问修饰符数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记public、private、protected来指定的。关键字public、private、protected称为访问修饰符。一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。成员和类的默认访问修饰符是 private。2.公...原创 2020-06-11 11:30:44 · 288 阅读 · 0 评论 -
(C++笔记_面向对象)_12类成员函数
C++类成员函数类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。看看之前定义的类 Box,现在我们要使用成员函数来访问类的成员,而不是直接访问这些类的成员:class Box{ public: double length; // 长度 double breadth; // 宽度 double height; .原创 2020-06-11 11:06:15 · 193 阅读 · 0 评论 -
(C++笔记_面向对象)_11类和对象
1.C++ 类定义它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。类定义是以关键字class开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。例如,我们使用关键字class定义 Box 数据类型,如下所示:class Box{ public: double length; // 盒子的长度 double breadth; // 盒子的宽度 double height; /...原创 2020-06-11 10:55:42 · 246 阅读 · 0 评论 -
(C++笔记)_10结构体
1.C++数据结构C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:Title :标题 Author :作者 Subject :类目 Book ID :书的 ID2.定义结构为了定义结构,您必须使用struct语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:...原创 2020-06-11 10:41:29 · 172 阅读 · 0 评论 -
(C++笔记)_09日期时间
C++日期 & 时间C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。有四个与时间相关的类型:clock_t、time_t、size_t和tm。类型 clock_t、size_t 和 time_t 能够把系统时间和日期表示为某种整数。结构类型tm把日期和时间以 C 结构的形式保存,tm 结构的定义如下:struct tm { ...原创 2020-06-10 22:02:13 · 149 阅读 · 0 评论 -
(C++笔记)_08引用
1.C++引用引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++ 引用 vs 指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。 引用必须在创建时被初始化。指针可以在任何时间被初始化。总结:指针比较自由C++ 中创建引用试想变量名称是变量附属在内存位置..原创 2020-06-10 21:48:26 · 148 阅读 · 0 评论 -
(C++笔记)_07指针类
1.变量地址与访问了解什么是内存地址 如何访问它每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:#include <iostream> using namespace std; int main (){ int var1; char var2[10]; cout << "var1 变量的地址: "; cout <原创 2020-06-10 21:00:37 · 122 阅读 · 0 评论 -
(C++笔记)05_数字类
C++ 随机数在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用srand()函数。下面是一个关于生成随机数的简单实例。实例中使用了time()函数来获取系统时间的秒数,通过调用 rand() 函数来生成随机数:主要是想记录:rand,srand在<cstdlib>中实例#include <iostream>#include <ctime>#inc...原创 2020-06-10 20:09:56 · 105 阅读 · 0 评论 -
(C++笔记)__04运算符
1.算术运算符下表显示了 C++ 支持的算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:运算符 描述 实例 + 把两个操作数相加 A + B 将得到 30 - 从第一个操作数中减去第二个操作数 A - B 将得到 -10 * 把两个操作数相乘 A * B 将得到 200 / 分子除以分母 B / A 将得到 2 % 取模运算符,整除后的余数 B % A 将得到 0 ++ 自增原创 2020-06-09 11:11:12 · 134 阅读 · 0 评论 -
(C++笔记)__03存储类
1.register 存储类register存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 '&' 运算符(因为它没有内存位置)。{ register int miles;}寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义 'register' 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。2.static 存储类s...原创 2020-06-09 10:11:42 · 172 阅读 · 0 评论 -
(C++笔记)__02修饰符类型
C++修饰符类型C++ 允许在char、int 和 double数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。下面列出了数据类型修饰符:signed unsigned long short修饰符signed、unsigned、long 和 short可应用于整型,signed和unsigned可应用于字符型 long可应用于双精度型。修饰符signed和unsigned也可以作为long或short修饰符的前缀...原创 2020-06-09 09:30:54 · 115 阅读 · 0 评论 -
(C++笔记)__01常量
1.整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制, 0 表示八进制, 不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。下面列举几个整数常量的实例:212 // 合法的 215u // 合法的 0xFeeL // 合法的 078 // 非法的:8 不是八进制的数字 032UU // 非原创 2020-06-09 09:18:01 · 179 阅读 · 0 评论 -
不允许指针指向不完整的类类型
没有导入包,#include<要导入的包>Qt::LeftButton == event->button()event下面红线,提示不允许指针指向不完整的类类型,所学教程上没有这个,导入这个包才行:#include <qevent.h>...原创 2019-08-30 16:12:53 · 3425 阅读 · 0 评论 -
VS2010中建立Qt工程但是Qt关键字下面出现红线,但编译又能通过
原贴在这:解决方式但是看到有些帖子说配置系统环境变量不好,刚开始学最好就是每次都去手动配置,有利于学习记忆。在这里记下,在在项目----属性----C/C+±—General----Additional Include Directories,加入你的qt/include的路径,我的是:I:\VS2010\QT\5.3\msvc2010_opengl\include要配置暂时就来这里拷贝一...原创 2019-08-30 11:32:52 · 1197 阅读 · 0 评论 -
Error:无法打开源文件“ui_example.h”
仅供个人学习参考。https://www.cnblogs.com/liangliu/p/8118149.html属性那些都弄好后,点击这里。原创 2019-08-23 14:29:09 · 2137 阅读 · 0 评论 -
fatal error C1075: 与左侧的 大括号“{”(位于“qthelloworld.cpp(10)”)匹配之前遇到文件结束 // 语法错误 : 缺少“;”(在“{”的前面)
有注释情况下,运行出错://connect(hello_world_action_, &QAction::triggered, this, &qtHelloWorld::HelloWorld);//q删去注释就可以不知道具体什么原因,注释也会出错的?...原创 2019-08-23 15:51:22 · 2118 阅读 · 0 评论 -
C++中的 template(模板) ----泛型编程,类型封装成变量
一个程序如果定义的类型是int类型,那么怎么样处理double类型的数据呢?我们传统的是将所有的 int 类型全部改成 double 类型 ,小程序这样改无疑是不错的选择,就算要改成char, string 等其他类型也不会消耗太多的资源。但是,如果是一个大型的程序呢?这样依靠手动修改类型是不是不合适?C++的 template 给我们提供了解决方案。template也叫模板,是泛型编...原创 2019-08-17 11:19:40 · 1761 阅读 · 0 评论 -
c++指针,指向内存空间
指针指向的是地址,如果是数组的话,是指向数组的首地址2.pTemp=new double[nSize]表示指针pTemp指向一个新开辟的数组的首地址,该数组为double类型,长度为nSize....原创 2019-08-13 10:50:41 · 654 阅读 · 0 评论 -
VS2010,C++ 制作静态库(*.lib),并使用
简单来说,就是建立两个项目:① Win32 Project (Win32 项目):接口文件.h 和 实现接口文件.cpp, 按F7编译后 生成静态库 *.lib ,lib可以理解成一个可以实现功能的包②Win32 Console Application(Win32控制台工程) :使用 *.lib 库以及接口文件.h,用一个main函数调用,就可以实现跟之前有实现接口文件.cpp一样的...原创 2019-08-21 23:38:34 · 1515 阅读 · 0 评论 -
今日笔记:C++,函数的参数使用结构体,一种是直接引用&,另一种是指针 *
定义的结构体如下:typedef struct{int n; // the size of the arraydouble *pData; // the data of the array}DArray;第一种:直接引用&例子如下:int SetValue(DArray& a,int k, double dValue){ if(a.pData==NULL)...原创 2019-09-10 21:39:10 · 843 阅读 · 0 评论 -
error:包含多个默认函数C++
参考博客:https://blog.csdn.net/wangshubo1989/article/details/50135039函数定义:CDArray(int nSize, double dValue = 0); 函数实现:CDArray(int nSize, double dValue )我们注意到不用给初始值!...原创 2019-09-12 11:42:40 · 222 阅读 · 0 评论 -
windows已在xxx.exe中触发一个断点,其原因可能是堆被损坏,这说明xx.exe中或它所加载的任何DLL中有bug。
多半是内存释放出错。找一找:new,deletenew[],delete[]是不是成对出现。你用的哪个new,delete也是用哪个,不要搭错了。这是我今天犯得小错误~原创 2019-09-17 20:36:14 · 1986 阅读 · 0 评论 -
(动态数组)要注意的数组大小变化
今天发现,进行增加,删除,插入(理解为改变了数组大小),不去进行改变指针指向的内存长度是会报内存错误的定义的一个动态数组类,有一个数组长度:m_nSize,有一个指针:*m_pData#if !defined _DYNAMICARRAY_H_#define _DYNAMICARRAY_H_#include<stdio.h>#include <stdlib.h>...原创 2019-09-17 22:01:21 · 1765 阅读 · 0 评论 -
C++的输入输出控制类
C++的输入输出控制类今天用这个来处理了从txt文件读入数据进行简单的处理,真的觉得有时候并不能把 问题描述的准确,导致查找的资料也不准确。不能解决自己的需求。看似很忙,问题却一无进展。可能是陷入了思维定式,试一试找找经验丰富的人交流交流。...转载 2019-09-22 17:17:36 · 246 阅读 · 0 评论 -
将多项式的系数cof,项deg,放进node,然后将node放进list里
收获:1.引入库:#include 使用list容器#include<iostream> 使用cout\cin#include<fstream> 操作文件#include<sstream> 字符串流(格式转换)#include <cmath> 使用数学函数#include <string> string操作2.自己...原创 2020-05-27 20:50:06 · 552 阅读 · 0 评论