
C++
文章平均质量分 55
岳麓吹雪
现在努力,以后就可以休息
展开
-
C++学习12:数组array
之前学习了向量vector,其效率稍低,在C++中新增了模板类数组array,效率和数组相同。数组array长度是固定的,使用栈存储,和数组效率相同,但更方便、安全。创建方法:array<typeName, n_elem> ad;和vector略有不同,array一定要在<>第二个参量位置定义长度n_elem。 例如:array<int,4> arr = {1,2,3,4};可以看到array是可原创 2017-08-20 11:24:08 · 815 阅读 · 0 评论 -
C++学习13:读写文本文件
读头文件fstream中定义了ifstream类,用于处理读取,ifstream需要指明std空间。声明ifstream变量:ifstream inFile;ifstream变量使用open()方法打开外部文件,使用结束时,调用close()将文件关闭:inFile.open("Data.txt");inFile.close(); //不需要文件名类似于“cin>>”,ifstream通过>>从给原创 2017-08-31 23:08:29 · 731 阅读 · 0 评论 -
C++学习16:引用
引用可以理解为给变量起一个别名,主要用于传参,通过定义引用变量,可以不使用副本,直接使用原始数据。定义引用变量:int a;int &b = a;//注意一定要初始化,引用不允许再次赋值。这里的&不是取地址符,是引用的标符号,这里定义了a的一个引用b,a和b会指向相同的内存单元,有相同的值,而且使用方法都是相同的。也就是说,此时可以把b看做a,两者是一样的。来看一个例子:#include<iost原创 2017-09-19 21:14:51 · 600 阅读 · 0 评论 -
C++学习19:名称空间
在使用c++时,一般都会有用到using namespace std;,今天就来学习一下名称空间。名称空间是c++的新特性,在c中是没有的。 其作用如下: 1. 防止名称冲突,简化大型项目的管理工作。 2. 替代全局变量,可以跨文件使用。就形式来看,名称空间与类很像:namespace a{ int i; int func(int a){return ++a;};}nam原创 2017-10-07 11:26:04 · 884 阅读 · 0 评论 -
C++学习18:#include的两种形式
使用#include包含头文件时,有两种形式: 1.#include < filename.h > 包含标准头文件时使用,例如stdio.h或stdlib.h。编译器会在系统目录下寻找头文件,系统目录在环境变量中指定,该目录下存储了编译器自带的标准头文件。 2.#include “filename.h” 包含非标准头文件时使用。编译器会首先查找当前的工作目录,如果没有找到头文件,则将在系统目原创 2017-10-03 17:01:41 · 1861 阅读 · 0 评论 -
C++学习5:类的构造函数
之前在本科的C++学习中,只记得对类进行定义和成员的调用,由于没有具体实践,大作业也很水,对构造函数欠缺理解,接下来就来学习构造函数。构造函数的作用首先来看构造函数的作用。类的结构类似于结构体,对于结构体是可以直接进行初始化的,比如:struct Date{ int year; int month; int day;};Date test = {2017,7,12};而原创 2017-06-21 18:26:33 · 880 阅读 · 1 评论 -
C++学习20:运算符重载
运算符重载是c++多态的一种形式,可以实现将运算符扩展到自定义的类型。运算符实际是一种函数,先来看运算符函数格式:operator 运算符> (参数列表>);原创 2017-11-16 20:57:20 · 627 阅读 · 0 评论 -
刷题笔记:C/C++专项练习6
题目: 在c++中实参和形参有3种结合方式,分别为:值传递、引用传递和地址传递。说法是否正确?A.正确 B.错误答案:B 知识点:实参与形参解析: 形参与实参的结合方式有两种:值传递和引用传递。形参的类型决定了形参与实参的结合方式,如果一个形参是引用类型,那么这个形参被绑定到实参上,成为实参的别名,称为引用传递;如果形参不是一个引用类型,那么实参的值将被拷贝并赋予形参,称为值传递。原创 2017-12-21 21:38:22 · 687 阅读 · 0 评论 -
刷题笔记:牛客字符串专项练习2
题目: 设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()A.2n-1 B.n² C.(n²/2)+(n/2) D.(n²/2)+(n/2)-1 E.(n²/2)-(n/2)-1 F.其他情况答案:D 知识点:子串解析: 非平凡子串即非空且不同于S本身的子串。对于长度为n的字符串,长度为1的互异的子串为n个,长度为2的互异原创 2017-11-27 21:09:08 · 4316 阅读 · 0 评论 -
记一次链接dll、lib的低级错误
最近在一个软件,需要QT调用dll的项目。昨天遇到一个问题,debug下一切正常,而release下就会报错内存冲突。这个错误还是很明显的,肯定是内存管理问题,直错很简单,很快发现了我有个地方数值设置错了,导致越界。但是运行之后,发现不论怎么修改dll运行还是报错,问题相同,还是内存冲突。于是我开始进一步找错,补充初始化之类的都试了都还是报错。本来dll主函数运行正常时会返回0,错误返...原创 2018-08-04 10:04:09 · 543 阅读 · 0 评论 -
C++学习11:向量vector
向量vector是一个模板类,可以用来替代动态数组,头文件为< vector >,能够自动管理内存,但效率比数组低。创建方法:vector<typeName> vt (n_elem);这样定义了一个名为vt的vector对象,typeName为vector中存储元素的类型,n_elem为vector为元素数量,n_elem可以为整型常量或整型变量。 例如: vector<int> vi;原创 2017-08-19 22:10:10 · 1144 阅读 · 0 评论 -
C++学习10:使用new分配内存
在C++中,可以沿用C中的malloc分配内存,也可以使用new运算符。今天就来学习使用new分配内存。new的作用和使用方法:new的作用在于可以在程序运行阶段动态分配内存,内存的大小在运行时根据需要确定,从而高效利用内存空间。new的使用方法如下:typeName* pointer_name = new typeName使用时用户需要指定类型(指针类型和要开辟的内存存...原创 2017-08-16 23:09:22 · 15348 阅读 · 5 评论 -
C++学习2:main()函数深入学习
main()函数是每一个程序的开始,它是所有程序的入口,其它的函数都是直接换间接在main()中被调用来发挥作用的。在程序运行时,编译器会为程序增加启动代码,由启动代码调用main()函数,从而进入程序。因此,启动代码是程序和操作系统之间的桥梁。main()函数一般情况下有以下三种函数头定义:1、void main(),无形参,无返回值。2、int main(),无形参,返原创 2016-10-30 21:48:31 · 1236 阅读 · 1 评论 -
C++学习4:宏定义#define与常量const
今天在看C++ Primer Plus时,看到其中说到常量定义时,使用const要优于#define,解释的有些模糊,从网上找到了资料来详细的学习一下。这位大神总结的很好,一起膜拜学习。 http://blog.youkuaiyun.com/love_gaohz/article/details/75678561. const用于定义常量数据类型,通过const定义的变量不能被修改。 对于普通数据类型,有两种原创 2017-03-19 22:53:46 · 1024 阅读 · 0 评论 -
C++学习3:数据类型大小信息
在使用C++时,需要考虑一个问题,就是数据类型的选择,用short、int、long还是long long,需要注意是否溢出的问题。而由于使用的环境不同,其数据类型大小存在区别。当年刚学C时,为了最简化使用,不去仔细想,投机取巧全部都用了long,现在想起来好逗比。从来没考虑过数据类型大小的本质规定,今天就来学习一下。 C++中提供了很简单的一个函数sizeof()来快速得到数据类型、变量的大小,原创 2017-03-13 22:53:56 · 968 阅读 · 2 评论 -
C++学习6:static关键字
c++中的static用于定义静态变量、函数,特点是在程序开始时分配空间,结束时释放空间,默认初始化为0。1.静态局部变量对于一个完整的程序,其内存分布情况如下图: 当定义一个局部变量时,会存储在栈中。使用static能够改变存储方式,在变量前增加static,该变量的存储空间将变为静态存储区,即数据段或BSS段,存储在该区域的数据只有在程序结束时才被释放,不会因函数退出释放空间。原创 2017-06-29 21:01:30 · 914 阅读 · 1 评论 -
C++学习7:用typeid().name()获取类型名
今天在看代码中,看到了一个很不错的工具函数typeid().name(),可以用来返回变量的数据类型,很实用。下面来具体学习一下该函数。首先来看typeid操作符,其返回结果是名为type_info的标准库类型的对象的引用。type_info中存储特定类型的有关信息,定义在typeinfo头文件中。下面来看typeid().name(),用于获得表达式的类型,以c-style字符串形式返回类型名。用原创 2017-06-30 12:04:42 · 30103 阅读 · 10 评论 -
C++学习8:共用体union
今天来学习一下共用体union。1、共用体可以存储多种类型的变量,但同时只能存储不同类型变量中的一种。 例如:union data{ int i; char ch; double f;} ;可以看到,共用体和结构体格式基本相同。这里共用体data,可以存储int、char、double三种数据类型的变量。2、不同数据类型的变量共用同一段内存单元,新的成员写入会覆盖旧的成原创 2017-08-12 18:02:45 · 818 阅读 · 0 评论 -
C++学习9:枚举enum
enum是一种创建符号常量的方式,可用于替代const。1. 定义:默认情况下,enum定义的枚举量会成为符号常量,对应从0开始的整数,从左到右依次+1。 例如:enum color{red, orange, yellow, green, blue, violet, black};color是枚举名,是一种新类型,red、orange、yellow等是枚举量,都是符号常量,对应0~7的整数。可以使原创 2017-08-12 23:13:41 · 1559 阅读 · 0 评论 -
C++学习14:使用typedef定义函数指针类型
最近在HM中遇到了 http://blog.youkuaiyun.com/qll125596718/article/details/6891881原创 2017-09-04 23:12:44 · 1144 阅读 · 0 评论 -
C++学习15:指针与const
1.常量指针声明方法:const int *p = &i;int const *p = &i;//两种方法等价。作用:不可更改指向地址的内容,但可修改指向地址。 int i = 1; int j = 2; const int *p = &i; //int const *p = &i; *p = 3; ...原创 2017-09-05 23:13:03 · 346 阅读 · 0 评论 -
C++学习17:函数模板
函数模板是通用的函数描述,通过将类型作为参数传递给模板,可使编译器生成该类型的函数。 当函数形式完全相同,只是参数类型不同时,可以使用函数模型,这样可以极大的减少代码量,便于维护。函数模板声明形式如下:template<typename 数据类型参数标识符><返回类型><函数名>(参数表){ 函数体}其中template和typename是固定的标识符,不可更好。为了使用简单,数据类型原创 2017-09-24 10:50:13 · 851 阅读 · 0 评论 -
C++学习21:操作符sizeof学习
sizeof是一个操作符,用于计算一个变量或类型的大小(以字节为单位)。1.sizeof操作在编译阶段进行最直观的验证方式为:int num[10];int a[sizeof(num)];C++中一般是不能使用变量作为一个数组的长度的,必须使用常量。这里不会报错,这是因为sizeof(num)在编译阶段已经完成计算。2.sizeof计算类型或变量大小sizeof可...原创 2018-08-20 18:24:42 · 497 阅读 · 4 评论