![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++笔记
文章平均质量分 74
_Lllljf_
这个作者很懒,什么都没留下…
展开
-
C++学习16_类和对象(对象的组织、单例模式)
文章目录对象的组织const对象指向对象的指针对象数组堆对象单例模式设计需求应用场景举例代码对象的组织有了自定义类,或别人定义好的类之后,就可以使用其来创建对象。其机制与使用int等创建普通变量几乎完全一致。同样可以通过类创建const对象、指向对象的指针、对象数组,动态对象(new/delete)。const对象类对象可以声明为const对象。因为const对象只能被创建、撤销和只读访问,不允许被改写。所以, 一般来说,除了构造函数和析构函数,能作用于const对象的成员函数只有const原创 2022-05-07 17:44:49 · 394 阅读 · 0 评论 -
C++学习15_类和对象(特殊数据成员初始化 特殊成员函数)
文章目录特殊的数据成员——初始化常量数据成员 ( const ) 和引用数据成员( & )类对象数据成员静态数据成员 ( static )特殊成员函数静态成员函数const成员函数特殊的数据成员——初始化4类比较特殊的数据成员 常量成员、引用成员、类对象成员和静态成员,其初始化与普通数据成员有所不同。常量数据成员 ( const ) 和引用数据成员( & )const数据成员具有“只读属性”,经初始化后,在程序中无法修改其值。因此必须在初始化列表中初始化常量数据成员,不能原创 2022-05-07 17:44:15 · 160 阅读 · 0 评论 -
C++学习14_类和对象的使用(this指针、赋值运算符函数)
目录this指针赋值运算符函数赋值运算符函数“四步曲”问题总结this指针**实质:**指向当前对象本身**存在:**隐含在每一个非静态成员函数的第一个参数的位置 ,由编译器自动补全。**形式:**类类型 * const this,例如:Point * const this指针常量:无法改变指向,可以改变所指内容值。对于类成员函数而言,此类的所有对象共用一个成员函数体。当程序被编译之后,成员函数地址即已确定。而成员函数之所以能把属于此类的各个对象的数据区别开, 就是靠th原创 2022-04-28 11:08:32 · 215 阅读 · 0 评论 -
C++学习13_类和对象的定义(构造、析构、拷贝构造)
类和对象构造函数、析构函数、拷贝构造函数类和对象类和对象的联系类的定义类class与结构体struct的区别通过类创建对象构造函数——创建对象析构函数——销毁/撤销对象析构函数的调用场景拷贝构造函数浅拷贝与深拷贝拷贝构造函数的调用场景问题回顾面向对象和面向过程的区别面向过程:按照事物发展的逻辑顺序一步一步进行下去。例:C语言。面向对象:四大基本特征——抽象、封装、继承、多态。例:C++语言。类和对象的联系将具有相同属性的对象抽象出来,形成类。通过类创建对象,得到具体的实例。即类是对象的封装,对原创 2022-04-28 10:22:32 · 246 阅读 · 0 评论 -
C++学习12_C++内存分配方式
引言现在的应用程序都运行在一个虚拟内存空间里,以32位系统为例,其寻址空间为4G。大部分的操作系统为4G内存空间,一般分为两个部分:内核态空间(应用程序无法直接访问),Linux默认将高地址的1G空间分配给内核态空间,用户态空间(用户使用),剩下的低地址的3G内存空间为用户态空间。C/C++程序内存空间分布(用户态空间)栈区(stack):由编译器自动分配与释放,存放函数参数、局部变量、返回数据、返回地址等。其操作类似于数据结构中的栈。堆区(heap):由程序员手动分配与释放,若程原创 2022-04-24 14:12:46 · 1437 阅读 · 0 评论 -
C++学习10_异常安全
异常是指程序在执行期间产生的问题。原创 2022-04-24 14:07:58 · 288 阅读 · 0 评论 -
C++学习9_bool类型与inline函数
bool类型一个bool类型的数据占据的内存空间大小为1个字节(1 byte)。在C++中,还添加了一种基本类型——bool类型,用来表示true和false。true和false是字面值,可以通过转换变为int类型,true为1,false为0。int x = true;// 1int y = false;// 0任何数字或指针值都可以隐式转换为bool值。任何非0值都将转换为true,而0值转换为false。bool b1 = -100;bool b2 = 100;bool b3 =原创 2022-04-20 10:33:37 · 1946 阅读 · 0 评论 -
C++学习8_函数重载与默认参数
函数重载函数重载的意义在实际开发中,有时候需要实现几个功能类似的函数,只是细节有所不同。如交换两个变量的值,但这两种变量可以有多种类型,short, int, float等。在C语言中,必须要设计出不同名的函数,其原型类似于:void swap1(short *, short *);void swap2(int *, int *);void swap3(float *, float *); 但在C++中,这完全没有必要。C++ 允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,原创 2022-04-20 10:31:57 · 183 阅读 · 0 评论 -
C++学习7_强制转换
C++强制转换一、C风格的强制转换(1) C风格的强制转换的格式TYPE a = (TYPE)EXPRESSION; (2) c风格的强制转换的缺点简单粗暴,可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些。c风格的转换不容易查找,它由一个括号加上一个标识符组成,而这样的东西在c++程序里一大堆。因此,为了原创 2022-04-20 10:30:45 · 169 阅读 · 0 评论 -
C++学习6_引用&
C++中的引用&基本概念:变量名的实质:一段连续内存空间的别名。而一段连续的内存空间不是只能取一个别名。引用的概念在C++中,引用表示一个已定义变量的别名。引用的语法类型 &引用名 = 目标变量名;void test0(){ int a = 1; //引用是变量的别名,提出引用的目的就是为了减少指针的使用 //操作ref与操作变量本身是一样的 int &ref1 = a; //引用变量在定义的时候必须要初始化,引用变量不能独原创 2022-04-20 10:30:05 · 92 阅读 · 0 评论 -
C++学习5_newdelete表达式与mallocfree库函数
new/delete表达式与malloc/free库函数1. malloc/free与new/delete之间的异同点?相同点:都是用来申请堆空间;malloc和free以及new与delete要成对出现,否则会造成内存泄漏。不同点:malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符或表达式 ;new能够自动分配空间大小,malloc需要传入参数;malloc申请的是原始的未初始化的堆空间,new申请的是已经初始化的堆空间;即new开辟空间的同时还对原创 2022-04-20 10:29:24 · 465 阅读 · 0 评论 -
C++学习4_const关键字
const关键字1. 普通变量与const关键字const修饰的变量称为const常量,定义的时候必须要初始化,且作为常量,不能修改。//const关键字修饰的变量称为常量const int number1 = 10;int const number2 = 20; //error 常量必须要进行初始化const int val;除了这种方式可以创建常量外,还可以使用宏定义的方式创建常量:const常量与宏定义的区别?编译器处理方式不同。宏定义是在预处理阶段展开,做字符串的替换;原创 2022-04-20 10:28:32 · 475 阅读 · 0 评论 -
C++学习3_命名空间 namespace
命名空间 namespace1. 命名空间的概念**命名空间:**可以由用户自己定义的作用域。在大型工程中,是由不同的工程师完成不同的部分,然后组合成一个完整的程序。对不同的部分,各个工程师用户可以通过命名空间来自己定义头文件,设计类或函数,避免出现名字冲突。命名空间又称为名字空间,是程序员命名的内存区域,程序员根据需要指定一些有名字的空间域,把一些全局实体分别存放到各个命名空间中,从而与其他全局实体分隔开。通俗的说,每个名字空间都是一个名字空间域,存放在名字空间域中的全局实体只原创 2022-04-20 10:27:23 · 247 阅读 · 0 评论 -
C++学习2_C++函数的声明和定义
C++中函数的声明和定义在程序中使用函数时,你必须先声明它然后再定义。**函数的声明:**告诉编译器你即将要定义的函数的名字是什么,返回值的类型是什么以及函数是什么。假如不声明,那么该函数就不能被其他函数调用。**函数的定义:**告诉编译器这个函数的功能是什么。C++中函数的声明可以有多次,但是函数的定义只能有一次。通常把函数声明叫做函数原型,把函数定义叫做函数实现。1. 函数的声明函数声明(函数原型)的语句结构:返回值类型 函数名(参数表);函数的声明和变量的声明一样,是一句语原创 2022-04-20 10:26:52 · 7442 阅读 · 0 评论 -
C++学习1_基础知识
C++学习基础知识Xshell中编写c++源文件:vim filename.cc/cpp。C++的头文件都是用模板进行编写的,模板的特点:必须知道所有的实现之后才能进行正常的编译。C++的头文件所在的位置:/usr/include/c++/。cout --> 输出流对象;<< -->输出流运算符。cin --> 输入流对象;>> -->输入流运算符。operator<< 整体看成是一个函数名(运算符重载);原创 2022-04-20 10:20:43 · 115 阅读 · 0 评论 -
内存泄漏 & 内存溢出 & 踩内存 & malloc底层实现原理
本文主要对内存泄漏、内存溢出、内存踩踏【踩内存】以及malloc的底层实现原理进行了总结。话不多说,直接往下看:参考文章:内存泄漏与内存溢出:https://blog.csdn.net/ruiruihahaha/article/details/70270574踩内存:https://blog.csdn.net/u014485485/article/details/104714934malloc的底层实现原理:https://blog.csdn.net/ypshowm/article原创 2021-08-21 21:28:33 · 10099 阅读 · 0 评论 -
codeup刷题 2.8小节——C/C++快速入门->结构体(struct)的使用 ——《算法笔记》(胡凡)
C语言11.1题目描述完成一个对候选人得票的统计程序。假设有3个候选人,名字分别为Li,Zhang和Fun。使用结构体存储每一个候选人的名字和得票数。记录每一张选票的得票人名,输出每个候选人最终的得票数。结构体可以定义成如下的格式:struct person {char name[20];int count; }leader[3] = {“Li”, 0, “Zhang”, 0, “Fun”, 0};输入第一行有一个整数n,表示以下有n张选票信息将会输入。保证n不大于100。以后的n行原创 2021-04-01 21:54:57 · 227 阅读 · 0 评论 -
C++笔记— 排序函数sort() 和vector容器
来源:菜鸟教程(侵删)一、排序函数sort()的排序(涉及到vector容器)#include <string.h>#include <vector>#include <iostream>#include <algorithm>using namespace std; int main(){ vector<int>obj; obj.push_back(1); obj.push_back(3);原创 2020-10-02 21:56:55 · 2552 阅读 · 0 评论