c++
旧时量刑
每天都要进步一点点
展开
-
C++ 那些事 基础进阶 ---const
const 含义 常类型是指示使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 const的作用 可以定义常量 const int a=100; 2. 类型检查~const常量具有类型,编译器可以进行安全检查;#define宏定义也存在数据类型,只是简单的字符串替换,不能进行安全检查。用const定义常量(类型为整数或枚举,必须以常量表达式初始化),则这种常量在非 odr 式使用(...原创 2020-09-04 17:27:18 · 220 阅读 · 0 评论 -
C++入门学习 静态成员函数
静态成员函数:在类中,static除了可以声明静态成员变量,还可以声明静态成员函数,普通成员函数可以访问所有成员,静态成员函数只能访问静态成员。编译器在编译一个普通成员函数时,会隐式增加一个形参this,并把当前对象的地址赋值给this,所以普通成员函数只能在创建对象通过对象来调用,因为它需要当前对象的地址,而静态成员函数可以通过类来直接调用,编译器不会为它增加形参this,它不需要当前对象的地址,所以不管有没有创建对象,都可以调用静态成员函数,普通成员变量占用对象的内存,静态成员函数没有th原创 2022-04-18 14:26:11 · 126 阅读 · 0 评论 -
C++入门学习 二十一-------static静态成员变量
Static:由来:对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响,例如由两个相同类型的对象a,b,它们都有一个成员变量m_name,那么修改a.name的值不会影响b.name的值可是有时候我们希望在多个对象之间共享数据,对象a改变了某份数据后对象b可以检测到,共享数据的典型使用场景是计数什么是static:用静态成员变量来实现多个对象共享数据的目标,静态成员变量是一种特殊的成员变量,它被关键字stctic修饰原创 2020-07-02 00:15:34 · 155 阅读 · 0 评论 -
C++入门学习十八 cin与cout
输入输出流:C++中的输入和输出可以看出是一连串的数据流。输入即可视为从文件或键盘中输入程序中的一串数据流输出即可视为从程序中输出一连串的数据流到显示屏或者文件中原创 2020-06-30 10:03:39 · 157 阅读 · 0 评论 -
C++入门学习二十---- 成员函数和成员变量
类:可以看成是一种数据类型,类似与普通的数据类型,但是又别于普通的数据类型,是一个包含成员变量和成员函数的集合成员变量:和普通变量一样,又数据类型和名称,但是在定义类的时候不能对成员变量符指,因为类只是一种数据类型,本身不占用内存空间,而变量的值则需要内存来存储成员函数:也和普通函数一样,都又返回值和参数列表,与一般函数的区别是,成员函数是一个类的成员,出现在类体种,它的左右范围由类来决定;而普通函数是独立的,左右范围是全局的,或位于某个命名空间内Class ...原创 2020-06-30 10:04:27 · 344 阅读 · 0 评论 -
C++入门学习十九----new与delete运算符
在C语言中,我们使用malloc函数来动态分配内存,用free()函数释放内存int *p=(int*)malloc(sizeof(int*)*10); //分配10个int型内存空间free(p); //释放内存在C++中,用new来动态分配内存,用delete用来释放内存int *p=new int; //分配1个int型的内存空间delete p;//释放内存new会根据后面数据类型来推断所需空间的大小如果希望分配一组连续的数据,可以使用new[];int *p=n原创 2020-06-30 10:04:03 · 110 阅读 · 0 评论 -
C++入门十六-----命名空间
命名空间Namespace:(也可以成为名称空间,名字空间)当开发大型软件时由多名程序员共同开发,会使用大量的变量和函数,不可避免的会出现变量或者命名冲突,为了解决合作开发时的命名冲突问题例子:小红和小明都参与了一个文件管理系统的开发,它们都定义了一个全局变量fp,用来指明当前打开的文件,将它们的代码整合在一起编译时,很明显编译器会提示fp重复定义错误,这时候就需要命名空间了namespace Ming{ //小明的变量定义 FILE fp=NULL;}namespace原创 2020-06-30 10:02:17 · 83 阅读 · 0 评论 -
C++学习 十五:面向对象编程
面向对象编程:面向对象编程: C++、Java、C#、PHP 等语言都支持类和对象面向过程的编程语言:C语言因为不支持类和对象的概念在C语言中,我们会把重复使用或者具有某项功能的代码封装成一个函数,将拥有相关功能的多个函数放在一个源文件,在提供一个对象的头文件,这就是一个模块,使用模块时,引入对应的对文件就可以。在C++中,多了一层封装,就是类(class),类由一组相关联的函数、变量组成,你可以将一个类或者多个类放在一个源文件,使用时引入对应的类就可以 ...原创 2020-06-29 16:10:27 · 106 阅读 · 0 评论 -
C++学习十七 this关键字
this 指针每个成员函数(包括构造和析构)都有一个this指针this指针指向调用对象,即可以通过this关键字访问当前对象的成员注意:this指针的类型为类类型*const (类名* const),为右值this指针本身不占用大小,他并不是对象的一部分,因此不会影响sizeof的效果this的作用域在类成员内部this 指针式类成员函数的第一个默认隐含函数,编译器自动维护传递,类编写者不能显示传递只有在类的非静态成员函数在才可以使用this指针,其他函数都不可以。原创 2020-06-30 10:02:51 · 2983 阅读 · 0 评论 -
C++ 学习十四 析构函数
析构函数:对象过期时自动调用的特殊成员函数析构函数一般用来完成清理工作析构函数的名称是在类名前加上~ 析构函数没有参数,只能有一个注意:析构函数用来释放对象使用的资源,并销毁对象的非static数据成员无论何时一个对象被销毁,都会自动调用其析构函数(隐式析构)释放是栈内存中的对象 用析构函数就可以但是当对象是堆内存中时,使用完毕时,记得delete ,释放内存。...原创 2020-06-23 16:30:49 · 233 阅读 · 0 评论 -
C++ 学习十三 构造函数
构造函数:以类名作为函数名无返回值类型作用:初始化对象的数据成员,一般使用构造函数进行成员变量的初始化类对象被创建时,编译器为对象分配内存控件并自动调用析构函数以完成成员的初始化种类:无参构造一般构造拷贝构造注意:如果创建的类中未出现书写任何构造函数,系统会自动生成默认的无参构造函数(函数为空,什么都不做)如果书写了构造函数,系统就不会在自动生成默认构造,如果希望有这样一个无参构造函数,需要自己显示的书写出来带参构造:类名::构造...原创 2020-06-23 16:10:07 · 159 阅读 · 0 评论 -
C++ 学习十二 类和对象
C++中的类:类·是一种将抽象转换为用户定义类型的工具将数据表示和操纵数据的方法组合成一个整体类的实例称为对象类中的变量和函数称为成员例子 地主类成员变量:名称 积分 手牌成员函数:摸牌 出牌 查看积分/** *地主类的声明 */class LandOwner{public: LandOwner(); /** 默认构造函数 */ ~LandOwner(); /** 默认析构函数 */ string name; /**原创 2020-06-23 15:31:40 · 99 阅读 · 0 评论 -
C++ 学习十一 函数重载 与函数模板
使用默认参数:默认值可以在函数原型或者定义中给出,不能在两个位置同时出现对于带参数列表的函数,必须从右向左添加默认值void test1(int a=1,int c=b,int c=5); 是可以的,调用例如 test1(1,2); test(5,6,7);void test2(int a=2,int b,int c=3); 是错误的函数重载:指可以有多个同名的函数函数名相同,参数列表不同(特征标不同)重载----编译器在编译时,根据参数列表对函数进行重命名,为避免混乱原创 2020-06-23 14:23:57 · 130 阅读 · 0 评论 -
C++ 学习十 使用引用参数和返回引用
使用引用参数:void Swap1(int, int);void Swap2(int*, int*);void Swap2(int&, int&);void Swap1(int num1, int num2){ int temp; temp = num1; num1 = num2; num2 = temp;}void Swap2(int* p1, int* p2){ int temp; *temp = *p1; *p1 = *p2; *p2 = *temp原创 2020-06-22 19:59:45 · 337 阅读 · 0 评论 -
C++ 入门学习九 ----内联函数
内联(inline)函数:是C++为了提高程序运行速度所作的一项改进与常规函数的区别不在于编写方式,而在于被调用时的运行机制不同参数的引用传递:默认参数:函数重载:函数模板:...原创 2020-06-22 19:20:40 · 110 阅读 · 0 评论 -
C++入门学习八-----函数与函数指针
函数分类:内置函数(STL和Boost C++)自定义函数函数三要素:返回值类型、函数名、参数列表参数和按值传递按值传递:给函数传递变元(参数时),变元(参数)值不会直接传递给函数,而是先制作变元(参数)值的副本,在存储在栈尚,在使用这个副本可用于函数,而不是使用初始值。void change(int num){ num++;}int main(){ int num=10; change(num); cout<..原创 2020-06-22 18:27:04 · 93 阅读 · 0 评论 -
C++学习七 动态分配内存
使用new分配内存指针真正的用户之地:在运行阶段分配未命名的内存以存储值在此情况下,只能通过指针来访问内存!使用delete释放内存与new配对使用不要释放以及释放的内存不要释放声明变量分配的内存1 在运行阶段为一个int值分配未命名的内存2 使用指针来访问(指向)这个值(右->左) int *ptr_int =new int;delete ptr_int; 释放由new分配的内存。使用new创建动态分配的数组int *intArray=new ..原创 2020-06-22 15:48:19 · 81 阅读 · 0 评论 -
C++ 学习六 ---指针
指针 是一个值为内存地址的变量(或数据对象)int year=2020;int *ptr_year;ptr_year=&year;基本用法:数据类型 *指针变量名;地址符号 &间接运算符 *ptr_num=111;空指针 :不指向任何对象,在试图使用一个指针之前就可以首先检查是否为空double *ptr_double=nullptr;int *ptr3=NULL; 需要cstdlib头文件void *指针一种特殊的指针类型,可以存放.原创 2020-06-22 15:02:09 · 101 阅读 · 0 评论 -
C++ 学习 五--- 数组的替代品
向量容器 vectorvector 是一个快速的动态分配内存的数组 动态数组,可以在运行阶段设置长度 具有数组的快速索引方式 可以插入和删除元素定义 vector<double> vec1; vector <string> vec2(5); 5个元素 vector<int>vec3(20,998); 20个元素都定义成998; ...原创 2020-06-22 13:58:35 · 212 阅读 · 0 评论 -
C++入门四 内存中如何存放数据(变量)
内存如何存放数据: 计算机使用内存来记忆或存储计算时所使用的数据 计算机执行程序时,组成程序的指令和程序所操作的数据都必须存放在某个地方 这个地方就是计算机内存 也成为主存(main memory)寄存器,或者随机访问存储器(Randow Access Memory,RAM)组成计算机的单位 二进制数字(binary digit) bit(位)如何操作计算机内存 变量就是计算机中一块特定的内存空间 有一个或者多个连续的字节组成 bit(比特) byte(...原创 2020-06-22 13:32:28 · 895 阅读 · 1 评论 -
C++学习 三 编译
C++的编译和执行编译和执行的过程1、编译 (预处理->编译->目标文件) 形成目标代码/文件,目标代码是编译器输出的结果,常见的扩展名为.o 或.obj2、连接 将目标代码跟C++函数库相连接,并将源程序所有的库代码与目标 形成最终可执行的二进制机器代码(可执行程序)3、执行 在特定的机器环境下运行C++应用程序...原创 2020-06-19 16:23:46 · 104 阅读 · 0 评论 -
c++ 学习二 拆解
给一个整型数组求和C语言int main(){ int data[]={0,1,2,3,4,5,6,7,8,9}; int size=sizeof(data)/sizeof(data[0]); printf("结果是:%d\n",addArray(data,size)); return 0;}int addArray(int array[],int n){ int sum=0; int i; fo原创 2020-06-19 15:45:17 · 155 阅读 · 0 评论 -
C++ 学习 一 什么是C++
面对对象的根本思想: 在面对对象的思想中,任何事物都可以被看成做一个对象。一个复杂的模型结构都是由千千万万个对象组成的。对象的两个要素:属性和行为 每个对象都是一个完整的独立的个体,它是由相关的属性和行为组合,与外界分割特点 1 封装 :意味把对象的属性和方法结合成一个独立的系统单位,并尽可能隐藏对象的内部细节 2 抽象:就是对具体问题进行概括的过程,是对一类公共问题进行统一描述的过程 为了使某些必要...原创 2020-06-19 14:27:41 · 90 阅读 · 0 评论 -
剑指offer——基础知识
请你来说一下C++类中成员的访问权限c++通过public、protected、private三个关键字来控制成员变量和成员函数的访问权限,它们分别公有的、保护的、私有的,被称为成员访问限定符。在类的内部(定义类的代码内部),无论成员被声明public、protected还是private,都是可以相互访问的,没有访问限制。在类的内部(定义类的代码外部),只能通过对象访问成员,并且通过对象只能...原创 2019-08-09 00:03:22 · 272 阅读 · 0 评论 -
剑指c++-OFFER——基础知识一
一说一下static关键字的作用1 全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量内存中的位置:静态存储区,在整个程序运行期间一直都存在初始化:未经初始化的全局静态变量会被初始化为0作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之外开始,到文件结尾2 局部静态变量在局部变量前加上关键字static,局部变量就变成一个...原创 2019-08-03 10:40:55 · 439 阅读 · 0 评论 -
城堡问题
2815:城堡问题查看提交统计提示提问总时间限制: 1000ms 内存限制: 65536kB描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####-原创 2016-07-12 17:14:21 · 652 阅读 · 0 评论 -
The Smallest String Concatenation 一道让自己崩溃的题
The Smallest String Concatenation,一道很有让人心碎的题转载 2016-03-23 17:21:37 · 340 阅读 · 0 评论 -
一道不管多少次都过不去的坷Grandma Laura and Apples
Grandma Laura and Apples题源http://acm.hust.edu.cn/vjudge/contest/view.action?cid=109071#problem/AA - Grandma Laura and ApplesTime Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmi转载 2016-03-23 17:54:43 · 468 阅读 · 0 评论