随笔分类 - C++ 知识点
摘要:1、静态成员变量 类的静态成员变量是,由该类的所以对象共同维护和使用的数据成员,每个类只有一个副本,是类数据成员的一种特例。采用 static 关键字声明。 目的:实现同一类中不同对象之间的数据共享。不包含 this 指针,因为是属于整个类的。 初始化必须在类外进行,类内声明,类外初始化。可以通过类
阅读全文
摘要:1、如何区分多个对象调用同一个类函数? 类外部访问类成员,必须用对象来调用。一个类的所有对象在调用的成员函数,都执行同一段代码,那成员函数如何区分属于哪个对象呢? 在对象调用成员函数时,除接收实参外,还接受一个对象的地址。也就是隐含参数:this 指针(编译器自动实现). this 指针指出,成员函
阅读全文
摘要:1、基本用法,定义变量、数组、对象 2、new 、delete与c的malloc、free的区别 (1)malloc、free,在定义对象时,只会分配内存大小,不会调用类的构造、析构函数; (2)new 、delete,不止会分配内存,也会调用构造、析构函数,初始化对象。
阅读全文
摘要:1、解决的问题: 在 B 类中,组合了一个 A 类对象,其中A类设计了构造函数。由于构造函数的调用规则,设计了构造函数就必须调用,但在定义B类时没有机会初始化A,因此采用构造函数的初始化列表来解决。 2、构造和析构调用顺序 先执行被组合对象的构造函数,如果组合对象有多个,则按照定义顺序,而不是按照初
阅读全文
摘要:1、复制构造函数、及new空间申请 复制构造函数,也是构造函数。只在初始化时调用,如果定义对象后赋值,比如,t1=t2,则只是运算符重载,没有调用构造函数。 注意: (1)复制构造函数是函数的形参是类的对象的引用的构造函数; (2)用一个已经存在的对象,初始化一个新的同类对象; (3)系统会自动生成
阅读全文
摘要:1、构造函数 (1)每个类都要定义它自己的构造函数和析构函数,是类的成员函数。 特点:名称与类名相同;没有返回值;一定是共有函数,可以直接访问类内所有成员函数;可以带默认形参,可以重载; (2)注意: (1)类中没有定义任何构造函数时,才使用默认构造函数,只要定义了,就不会存在默认构造函数; (2)
阅读全文
摘要:1、类的封装、实现、对象的定义及使用 (1)类是一组对象的抽象化模型。类对象将数据及函数操作集合在一个实体中,只需要接口,而不需要知道具体的操作。 隐藏细节,模型化; 类内自由修改; 减少耦合,相当于一个轮子; (2)类的实现 类的函数,原型声明要在类的主体中,而函数的具体实现一般卸载类声明之外。如
阅读全文
摘要:一、C语言中,为什么字符串可以赋值给字符指针变量? char *p; a='5'; p=&a; //显然是正确的, p="abcd"; //但为什么也可以这样赋值?? 问:一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点! 答:双引号做了3件事: 1.申请了空间(在常量区),存放了字符
阅读全文
摘要:1、内存泄漏 动态申请的内存空间没有正常释放,但也不能继续使用。 2、指针悬挂 让指针指向一个已被释放的空间,该空间已不存在。
阅读全文
摘要:1、指针变量 (1)指针变量必须在初始化后才可以正常使用,初始化就是给他分配一个有效的数据地址。 先初始化,后使用。 (2)指针可以进行加减运算,++ 或者 --:将指针的位置向前或者向后移动一个数据单元(char是一个格,int 是4个格子)。 (3)指针之间直接相加没有意义,但相减是求出:两个指
阅读全文
摘要:1、引用概念 引用是别名,必须在声明的时候初始化。即:是指一个已定义变量的别名。(一个内存空间,有两个名字都可以操作) 引用:在函数调用时,是变量的别名,不可以单独存在,使用时必须要初始化; 指针:本身有自己的地址,可以单独存在。 2、引用基本举例 引用在交换时的例子: 3、引用本质思考 (1)引用
阅读全文
摘要:1、const 常量概念 对于 const 定义的常量,必须在定义时初始化,不能在程序执行运行过程中改变。 2、指针常量、常量指针 区别 (1)技巧:从右向左读,替代方法: p:换为 p is a; * :换为 point to ; (2)const 在 * 左边:表示,指针指向为常量,不能改变内容
阅读全文
摘要:1、const (1)C++对 const 常量的处理过程:当编译器碰到 常量声明 时,在符号表中放入常量,编译时发现使用常量,则直接以符号表中的值替换。 (2)如果,编译中发现,对 const 使用 extern 或者 & 操作符时,则会给对应变量分配新的存储空间。 符号表保存的内容: key v
阅读全文
摘要:1、内存模式 一个程序执行时,先复制到内存,然后CPU逐句读取指令执行。 每个存储单元存放一个字节(8bit)数据,每个有一个唯一的地址,地址是顺序编码的。比如:一台计算机256MB内存,则有256*1024*1024个内存单元,如果用7位十六进制数表示地址值,则范围是:0x0000000~0xFF
阅读全文
摘要:1、C++ 表达式返回值 返回引用:当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。(与之对应的C语言中,返回的是变量的值) C++中,表达式返回的是变量本身(也就是变量对应的地址)。编译器帮我们完成 取地址的工作。 2、引用与指针 引用是别名,必须在声明的时候初始化。 引用:在函数调
阅读全文
摘要:1、为什么类中引用成员函数? 类将属性和方法做了封装。类是一种数据类型,也就是:固定大小内存块的别名。 类的定义是一个抽象的概念,定义时不分配内存,当用类定义对象时,才分配一个固定大小的内存块。 此时,定义对象后,类内定义的变量就会执行一次初始化,但是主函数输出area时就是乱码,因为是直接去对应内
阅读全文
摘要:1、基本数据类型 sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小。 sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。 使用 sizeof 的语法如下: 其中,data type 是要计算大小的数据类型,包括类、结构、共用体和其他用户自
阅读全文
摘要:快捷键设置方法:https://blog.csdn.net/wrzfeijianshen/article/details/53230789 https://blog.csdn.net/wrzfeijianshen/article/details/77782939 常用快捷键总结: Ctrl+K,Ct
阅读全文
摘要:在c++中有两个关联容器,第一种是map,内部是按照key排序的,第二种是unordered_map,容器内部是无序的,使用hash组织内容的。 1、对有序map中的key排序 如果在有序的map中,key是int,或者string,它们天然就能比较大小,本身的就是有序的。不用额外的操作。 2、对有
阅读全文
摘要:1、利用自定义的排序函数 通过传递一个函数 cmp给sort函数 , 注意: cmp中return a<b; 决定为从小到大的排序 return a>b; 决定为从大到小的排序 2、自定义字符串的排序函数 (1)排序的比较方式,长度相同则字母排序,否则长度排序 在函数中定义时不用将比较函数定义为静态
阅读全文