c++
半命仙
活着毕业!
展开
-
C++初始化临时量的概念
初始化常量引用时,不再硬性要求引用的类型必须与所引用对象一致,例如:double a=3.14;const int &x=a;//这样初始化不会报错,而且引用x也不是指向a因此会有一个临时量的概念,很好的解释了这一初始化特例,在常量引用初始化时,实际上过程为:double a=3.14;const int temp=a; //此时temp为整型,得到的对象temp值为3是个常量const int &x=temp; //常量引用指向temp这一临时量引用x指向了一个未命名的原创 2022-01-07 23:11:00 · 363 阅读 · 0 评论 -
C++指针与引用的区别
1.指针指向内存中某个对象,引用绑定到内存中某个对象2.指针本身就是一个对象,而引用只是绑定对象的一个“别名”3.指针无需在定义时赋初值,引用必须在定义时赋初值int a=100;int *p; //定义指针,可以不立即赋初值*p=0; //给指针赋零,指针仍有效,表示一个空指针*p=&a; //给指针赋a的地址,指针指向aint &s=a; //定义引用,必须在定义时赋初值...原创 2022-01-07 21:16:41 · 534 阅读 · 0 评论 -
c++简述构造函数与析构函数
在学习c++中,与C语言学习最大的分歧从类的定义开始,c++引入的类的概念,使其相较于C语言更具模块性,编写的程序封装性、继承性都相对更好。在类的学习中,有一大难点在于“构造函数”与“析构函数”,在此,我将分享一些自己关于二者的学习体会。...原创 2021-08-27 16:34:44 · 310 阅读 · 0 评论 -
c++递归实现汉诺塔问题
#include <iostream>#include <cstdlib>using namespace std;void hanoi(int n,char x,char y,char z);int main(){ int n; cin >> n; hanoi(n, 'A', 'B', 'C'); return 0;}void hanoi(int n, char x, char y, char z){ if (n > 0) {原创 2021-08-24 17:10:23 · 182 阅读 · 0 评论 -
C++浅谈二维数组与指针
在C++中数组与指针有着紧密的联系,用指针对数组进行操作使得程序更加简洁高效,但是二者的衔接中往往会出现许多诸如格式,空间大小等方面不对应的问题,下面我将通过几个实例来简述二维数组与指针的关系。首先来看最简单的将指针指向一维数组。char a[10]; //先定义一个一维字符型数组achar *p[10]; //这种定义得到的是指针数组,即整个数组中全部存放字符型指针char (*p)[10]; //这样定义得到指向数组的指针*p=a;上例体现了一个很重要的注意点:运算符的优先级。指针运原创 2021-08-22 19:49:30 · 486 阅读 · 0 评论 -
C++“没有与参数列表匹配的重载函数“strcpy_s”实例”报错解决方法
在使用c++继承自C语言的“string.h”库(在c++中写为cstring库)时,我们常会用到strcpy函数为字符数组赋值,这种赋值方法是几种字符串赋值方法中最简便快捷的,但是当我们在vs2019中使用此函数时却被告知函数不安全,建议使用"strcpy_s"的格式,而当我们使用此格式编程后,便会出现标题所示的错误。这项报错的意思是我们使用此函数的格式不正确,在VS2019中可以将鼠标停留在写下的strcpy_s函数上,软件将会给出它希望得到的格式。如上图,软件希望我们使用strcpy_s时按原创 2021-08-20 09:34:34 · 18066 阅读 · 3 评论 -
c++string库常见处理指令的使用方式
string库是c++的一个非常重要的标准库,相较于C语言中的字符串,使用string定义的是可变字符串,能够避免很多因为字符串空间固定、字符串不易改变带来的麻烦。下面将介绍几种基础的string库操作指令。1、初始化string对象的几种方式:对string对象的初始化大致可分为直接初始化和拷贝初始化两种。拷贝初始化通过“=”将需要赋的值拷贝给对象,直接初始化使用“()”,将括号内的字面值或对象值直接赋给对象。string s1="abandon"; //拷贝初始化string s2(s1)原创 2021-07-31 19:17:22 · 376 阅读 · 0 评论 -
c++auto与decltype的区别
auto和decltype是两种类型推断方式,二者区别主要在三个方面。第一,auto类型说明符用编译器计算变量的初始值来推断类型,而decltype虽然也通过编译器分析得到他的类型,但不计算表达式的值,表达式内的变量并不因decltype操作而发生改变。第二,编译器判断的auto类型有时是不符合我们预期的,编译器将适当改变结果类型使其更符合初始化规则,其中最典型的一条就是auto会忽略顶层const而保留底层const(对于顶层const和底层const,最简单的记法是顶层const表示定义变量本身是个原创 2021-07-28 10:34:43 · 416 阅读 · 0 评论 -
c++浅谈decltype类型指示符
decltype类型指示符相当于auto指示符的改进版,使用此类型指示符能让被定义变量的类型指定为程序中已有,而我们不好直接写出的(比如某个函数的输出结果有多种数据类型的可能,而下面我们要定义的变量类型需与函数返回值类型一致),便可以使用decltype类型指示符。例如:decltype (f()) sum=x;//sum的类型为函数f的返回类型应注意,在其他类型指示符下,引用都作为所指对象同义词出现,但用在decltype下,引用类型由decltype()括号中的引用类型决定。例如:const原创 2021-07-28 10:05:48 · 268 阅读 · 0 评论 -
c++的一个书店销售记录累加程序
主要是对类的应用#include <iostream>#include"Sales_item.h"using namespace std;int main(){ Sales_item total; //用于保存对某本书的交易记录,在这个程序里保存的是销售额之和 if (cin >> total) //读入第一本书的销售情况,并直接作为加和的第一项 { Sales_item trans; //用于输入下一条数据 while (cin >> tra原创 2021-06-08 23:07:39 · 287 阅读 · 0 评论 -
C++中“指向常量的指针”和“常量指针”辨析
无论是在学习C语言还是学习C++语言时我们都会遇到这样一个很复杂的概念辨析——什么是指向常量的指针,什么又是常量指针,下面分享一些我的理解。一、从表现形式来看指向常量的指针在使用时应写为:const int *a=&p;//p是一个常量常量指针使用时写为:int *const a=&p;二、从使用特性来看和常量引用一样,指向常量的指针没有规定其所指的对象必须是个常量,所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而没有规定那个对象不能通过其他途径改变。简单来说,指向原创 2021-07-21 16:36:41 · 145 阅读 · 0 评论