指针与对象知识点

合集下载

引用和用指针的区别

引用和用指针的区别

引用和用指针的区别在c++函数中,形式参数用引用和用指针都可以起到在被调用函数中改变调用函数的变量的作用。

什么时候用引用作参数什么时候用指针作参数呢 void function (int *ptr); void function(int &ref);没有特定的规定。

学的久了,就会习惯什么时候用指针什么时候用引用了引用与指针有什么区别? 1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

2) 不存在指向空值的引用,但是存在指向空值的指针。

C++中尽量用引用。

个人觉得所有的引用都可以用指针,但指针比引用容易出错。

引用当然更直观更直接,做参数时,如果在函数内不刻意要用指针的那些副作用(如越界访问,动态定向什么的),引用可以代替指针。

C++ 中一般都用引用就可以了 ... C 中没有引用,就使用指针 ....举例如下: 1 使用指针传递参数时: void function (int *ptr) { 函数体;} 调用该函数时 main() { int p; function (&p); } 2 使用引用传递参数时: void function(int &ref) { 函数体;} 调用该函数时 main() { int p; function (p); } 由此可见,使用引用比使用指针传递参数函数调用时更简单,引用和指针功能大体相同,但是有空间分配时建议最好使用指针,因为在释放空间时,对指针只需要delete就行了,而引用是不能删除空间的,引用必须指向一个存在的对象。

指针和引用的差别 1. 非空的差别任何情况下都不能使用指向空值的引用.一个引用必须总是指向某个对象. 不存在的指向空值的引用这个事实意味着使用引用的代码效率比使用指针要高. 2. 合法性区别在使用引用之前不需要测试他的合法性.指针必须测试. 3. 可修改区别指针可以被重新赋值给另一个不同的对象.但是引用总是指向在初始化的时候被制定的对象,以后不能改变.但是指定的对象其内容可以改变. 应该使用指针的情况: 可能存在不指向任何对象的可能性需要在不同的时刻指向不同的对象(此时,你能够改变指针的指向) 应该使用引用的情况: 如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,使用此时应使用引用。

c++ 期末复习知识点整理

c++ 期末复习知识点整理

基本概念:1.c++是在20世纪80年代初期由贝尔实验室设计的一种在c语言基础上增加了对(面向对象)程序设计支持的语言。

2.include<iostream.h>是c++库文件。

cout<<"输入";//输出cin>>r; //输入3.一个c++程序由编译预处理指令,数据或数据结构定义和若干函数组成。

4.一个c语言程序可以包含若干函数,其中main表示主函数,每个函数的执行必须从main开始。

5.c++将数据分为基本数据类型,派生类型,符合类型=构造类型,VC6.0不支持bool型6.指数形式,E或(e)后面必须是整数7.c++不支持空字符常量['']是不合法,[""]是合法;endl表示换行。

8.如果需要在字符串中出现双引号,则必须用"\"表示。

例如:"please press\"F1\" to help"9.变量的默认类型为double10.使用const,define表示定义标识符常量。

11.条件运算符nNum=(a>b)?10:812.size of是用于返回操作数所占的内存空间大小13.break用于结束switch循环或从一个循环跳出。

continue用于结束本次循环进入到一个循环中。

14.c++是一种面向对象的程序设计语言,它与面向过程设计方法的最大不同是引入了“类和对象”的概念,而此时函数是构造“类”成员的一种手段。

15.函数调用时,实参与形参的个数应相等,类型应一致,且按顺序对应,一一传递数据16.在c++中,允许在函数声明或定义时给一个或多个参数指定默认值,这样在调用时,可以不给出参数,而按指定的默认值进行工作。

(1)函数既有原型声明又有定义时,默认参数只能在原型生命中指定。

(2)当一个函数中需要有多个默认参数时,则形参分配中。

句柄和指针,比如HWND和CWnd,到底有什么区别

句柄和指针,比如HWND和CWnd,到底有什么区别

HWND 和CWnd*谢谢大家。

这是我从前面的帖子里找出来的,和stoneyrh说得差不多,个人觉得很有道理:在windows程序设计中,句柄仅是一个应用程序用来识别某些事情的数字如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。

我们知道,所谓指针是一种内存地址。

应用程序启动后,组成这个程序的各对象是住留在内的。

如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。

但是,如果您真的这样认为,那么您就大错特错了。

我们知道,Windows是一个以虚拟内存为基础的操作系统。

在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。

对象被移动意味着它的地址变化了。

如果地址总是如此变化,我们该到哪里去找该对象呢?为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。

Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。

这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。

这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。

句柄地址(稳定)→记载着对象在内存中的地址────→对象在内存中的地址(不稳定)→实际对象但是,必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。

假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 句柄用来引用不同的windows对象。

C语言教学重点难点

C语言教学重点难点

教学重点、难点第一章C语言概述1.C语言的特点2.C源程序的基本结构3.标识符与保留字第二章基本数据类型、变量、常量、运算符与表达式1.基本数据类型(整型,实型,字符型)的存贮长度、表示数据范围2.整型、实型、字符型(换码字符)、字符串常量3.所有运算符(1)算术运算符:+,-,*,/,%(注意整型除法运算的特点)(2)关系运算符:<,>,<=,>=,!=,==(3)逻辑运算符:&&,||,!(4)位运算符:<<,>>,&,|,~,^(5)自增减运算符(++,――)(6)赋值运算符:=,自反赋值运算(7)其它运算符:强制类型转换,求类型长度,?: 表达式4.运算符的结合性与优先级顺序5.不同数据类型混合运算规则与赋值类型转换规则第三章简单程序设计1.单字符输入/输出函数:getchar与putchar2.格式化输入/输出函数:scanf与printf3.简单顺序程序设计4.if语句6.switch语句7.条件分支结构程序设计第四章循环控制语句1.goto、while 、do…while、for2.循环嵌套使用3.循环结构程序设计第五章数组1.数组的定义与初始化方法2.静态数组的特点3.字符数组4.字符串的存贮格式第六章函数1.常用系统库函数的使用2.函数定义方法(标准C与ANSIC形式)3.函数的结束与返回函数值的方法4.函数的参数传递(特别是数组与指针参数)5.函数的递归调用6.变量的四种存贮类型(auto,extern,register,static),特别是stati c变量的特点7.局部变量与全局变量(变量的作用域,静态与动态存贮区)8.外部函数与内部函数9.变量的说明与函数说明第七章指针初步1.指针的概念、指针常量2.指针的运算与指针表达式3.取地址运算符&与取对象运算符*4.指针与一维数组5.字符串处理6.内存动态分配malloc与释放free7.二级指针(以指针为对象的指针)8.指针数组9.指针与二维数组的关系(指向一维数组的指针)10.函数指针定义与引用第九章编译预处理1.宏定义,特别是带参数的宏定义2.包含文件,特别是""与<>的区别3.条件编译(能够读懂含有条件编译的源程序)第十章结构体、联合体、枚举类型、类型定义、位段1.结构体(1)结构变量的定义与存贮方法(2)结构指针与结构数组的使用(3)结构成员变量的使用与输入/输出(4)结构体作为函数形式参数2.联合体的结构存贮特点与成员的使用方法3.枚举类型的定义与使用特点4.用typedef定义用户自定义类型5.位段的定义,存贮特点与使用方法第十一章文件操作1.C语言流文件的概念2.缓冲与非缓冲文件的概念3.文件操作函数(1)文件打开fopen,特别是打开方式串的正确使用(2)文件关闭fclose(3)输入与输出函数fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite (4)文件数据指针的概念与使用ftell,fseek,rewind(5)文件读操作结束标志函数feof(6)正文与二进制文件的区别与相关操作(7)常用文件处理程序设计课程应掌握的知识点第一章C语言概述本章是C语言的简介。

C++重点知识点总结及习题

C++重点知识点总结及习题

C++的特点:1.支持抽象数据类型2.多态性,一个接口,多重算法,支持早期联编和滞后联编3.继承性,保证了代码复用,支持分类的概念一个c++程序由一个或多个函数构成,并且在这些函数中只有一个主函数main ,它是程序执行的入口。

C++程序严格区别字母的大小写。

第2章 基本数据类型、运算符与表达式【内容提要】 数据类型 变量与常量 运算符与表达式 简单输入与输出 【重点与难点】 2.1 数据类型在C++程序里,每个名字都有一个与之相关联的类型,这个类型决定了可以对这个名字所指代的实体应用什么操作,并决定这些操作将如何做出解释。

图中Type 表示非控数据类型。

2.1.1 基本数据类型逻辑型:又称布尔型,用关键字bool 表示。

有两个值true 或false 。

true 可以转换成整数1,false 可以转换成整数0。

与此对应,整数也可以隐式的转换成bool 值:非0的整数转换成true,0转换成false 。

数据类型基本数据类型复合数据类型字符型 char结构类型 struct 枚举类型 enum单精度型 float数组类型 Type[] 双精度型 double布尔型 bool 浮点型指针类型 Type* 联合类型 union 类类型 class 空类型 void整型 int图2.1 C++的数据类型字符型:用关键字char表示。

取值包含具体实现所用的字符集里的一个字符。

字符型数据通常占用1个字节的存储空间。

整型:用关键字int表示。

取值是计算机所能表示的所有整数。

浮点型:包括单精度型(float)和双精度型(double)。

单精度型通常占用4个字节的存储空间,双精度型通常占用8个字节的空间。

空类型:用关键字void表示。

用于说明某个函数没有返回值。

没有void类型的对象。

在基本的数据类型前可以添加修饰符,以改变基本类型的意义。

signed:有符号。

unsigned:无符号。

unsigned和signed只用于修饰char和int,且signed修饰词可以省略。

全国计算机二级Python程序设计考点

全国计算机二级Python程序设计考点

全国计算机二级Python程序设计考点Python 语言因其简洁易懂、功能强大,在编程领域越来越受欢迎。

对于准备参加全国计算机二级 Python 程序设计考试的同学来说,了解考点是备考的关键。

以下是对主要考点的详细介绍。

一、基本语法1、数据类型数字类型:包括整数(int)、浮点数(float)、复数(complex)。

需要掌握它们的表示方法、运算规则以及相互转换。

字符串类型:理解字符串的定义、索引、切片操作,以及常见的字符串方法,如查找、替换、分割等。

列表、元组和字典:列表(list)是可变序列,元组(tuple)是不可变序列,字典(dict)是键值对的数据结构。

要熟悉它们的创建、访问、修改和遍历方法。

2、变量与赋值变量的命名规则:遵循标识符的命名规范,能够正确定义和使用有意义的变量名。

赋值语句:掌握简单赋值、多重赋值和序列解包等赋值方式。

3、运算符与表达式算术运算符:加(+)、减()、乘()、除(/)、取模(%)、幂运算()等。

比较运算符:大于(>)、小于(<)、等于(==)、不等于(!=)等,以及它们的组合使用。

逻辑运算符:与(and)、或(or)、非(not),能够根据逻辑关系构建表达式。

4、控制结构顺序结构:按照语句的书写顺序依次执行。

选择结构:包括 ifelifelse 语句,能够根据条件进行不同的处理。

循环结构:for 循环和 while 循环,掌握循环的条件判断、循环体的执行以及循环的控制。

二、函数1、函数的定义与调用定义函数:使用 def 关键字定义函数,明确函数的参数和返回值。

调用函数:传递正确的参数,获取函数的返回结果。

2、参数传递位置参数:按照参数的位置顺序传递。

关键字参数:通过参数名指定参数值。

默认参数:在函数定义时为参数指定默认值。

可变参数:args 和 kwargs 的使用。

3、函数的返回值返回单个值或多个值。

理解返回值的类型和处理方式。

4、内置函数熟悉一些常用的内置函数,如len()、range()、sum()、max()、min()等,能够在程序中正确使用它们。

C++经典知识点面试题

C++经典知识点⾯试题1、指针的优点和缺点优点:灵活⾼效(1)提⾼程序的编译效率和执⾏速度(数组下标往下移时,需要使⽤乘法和加法,⽽指针直接使⽤++即可)(2)通过指针可使⽤主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯。

(3)可以实现动态的存储分配。

(4)便于表⽰各种数据结构,如结构体,编写⾼质量的程序。

缺点:容易出错(1)可能变成野指针,导致程序崩溃(2)内存泄露(3)可读性差2、指针和引⽤的定义和区别(1)指针和引⽤的定义1)指针:指针是⼀个变量,存储⼀个地址,指向内存的⼀个存储单元;2)引⽤跟原来的变量实质上是同⼀个东西,只不过是原变量的⼀个别名⽽已。

(2)指针和引⽤的区别<1> 从内存分配上来说:1)指针是⼀个实体,⽽引⽤仅是个别名,即为指针分配内存,⽽不为引⽤分配内存空间;<2> 从指向的内容来说:2)引⽤只能在定义时被初始化⼀次,之后不可变;指针可变;3)引⽤不能为空,指针可以为空;4)const与指针搭配可以表⽰指针指向和指针指向内容是否可变。

const与引⽤搭配只有⼀种,即来修饰其内容的可读性。

由于引⽤从⼀⽽终,不⽤修饰其指向。

5)指针可以有多级,但是引⽤只能是⼀级(int **p;合法,⽽int &&a是不合法的)<3> 其他⽅⾯6)"sizeof引⽤"得到的是所指向的变量(对象)的⼤⼩,⽽"sizeof指针"得到的是指针本⾝的⼤⼩;7)指针和引⽤的⾃增(++)运算意义不⼀样;指针和引⽤在符号表中的形式:程序在编译时分别将指针和引⽤添加到符号表上。

在符号表上记录的是变量名及变量所对应地址。

在符号表上,指针变量对应的地址值为指针变量的地址值,⽽引⽤对应的地址值是引⽤对象的地址值。

符号表⽣成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),⽽引⽤对象不能改。

计算机二级考试选择题必背知识点(公共基础+计算机基础)

计算机二级考试选择题必背知识点公共基础第一章数据结构与算法§1.1 算法1.算法的定义:是指解题方案的准确而完整的描述。

(算法不等于程序,程序的设计不可能优于算法的设计)2.算法的基本特征:可行性、确定性、有穷性、足够的情报。

3.算法的基本要素:4.算法的时间和空间复杂度:算法的时间复杂度和算法的空间复杂度相互独立。

§1.2 数据结构的基本概念1.数据:需要处理的数据元素的集合,一般来说,这些数据元素,具有某个共同的特征。

(1)数据元素是数据的基本单位,即数据集合中的个体。

(2)有时一个数据元素可有若干数据项组成。

数据项是数据的最小单位。

2.结构:是集合中各个数据元素之间存在的某种关系(或联系)。

3.数据结构:是指相互有关联的数据元素的集合。

4.数据结构的分类:(1)逻辑结构:线性结构(线性表、栈、队列);非线性结构(树、图)。

(2)存储结构:顺序存储;链式存储。

(3)运算:插入、删除、查找、排序。

5.逻辑结构:反应数据元素间的逻辑关系(即前后件关系)的数据结构。

(1)线性结构(线性表):(举例:春→夏→秋→冬)a.有且只有一个根节点,它无前件;b.每一个节点最多有一个前件,也最多有一个后件。

(2)非线性结构:a.不满足以上两个条件的数据结构就称为非线性结构;b.非线性结构主要是指树形结构和网状结构。

6.存储结构:又称为数据的物理结构,是数据的逻辑结构在计算机存储空间中的存放方式(1)顺序存储结构:主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里。

(2)链式存储结构:每一个结点至少包含一个指针域,用指针的指向来体现数据元素之间在逻辑上的联系。

§1.3 线性表及其顺序存储结构1.线性表:线性表是n(n≥0)个数据元素构成的有限序列,表中除第一个元素外的每一个元素,有且只有一个前件,除最后一个元素外,有且只有一个后件。

举例:英文字母表、地理学中的四向、表格2.线性表的顺序存储结构:通常线性表可以采用顺序存储和链式存储,但一般使用顺序存储结构。

C语言字符型基础知识

C语言字符型基础知识在学习中,大家都背过各种知识点吧?知识点在教育实践中,是指对某一个知识的泛称。

相信很多人都在为知识点发愁,下面是店铺为大家整理的C语言字符型基础知识,仅供参考,希望能够帮助到大家。

C语言字符型基础知识1. 字符型数据文字处理是计算机的一个重要应用领域,这个应用领域的程序必须能够使用和处理字符形式的数据。

在C语言中,字符型数据包括字符和字符串两种,例如'a'是字符,而"Windows" 是字符串。

字符型数据在计算机中存储的是字符的ASCII码(ASCII码表见附录A),一个字符的存储占用一个字节。

因为ASCII码形式上就是0 到255之间的整数,因此C语言中字符型数据和整型数据可以通用。

例如,字符"A"的ASCII码值用二进制数表示是1000001,用十进制数表示是65,在计算机中的存储示意图见图3-6。

由图可见,字符"A"的存储形式实际上就是一个整型数65,所以它可以直接与整型数据进行算术运算、混合运算,可以与整型变量相互赋值,也可以将字符型数据以字符或整数两种形式输出。

以字符形式输出时,先将ASCII码值转换为相应的字符,然后再输出;以整数形式输出时,直接将ASCII码值作为整数输出。

2.字符型常量字符常量亦被称为字符常数。

C语言中字符常量是括在一对单引号内的一个字符。

例如:'x'、'B'、'b'、'$'、'?'、' '(表示空格字符)、'3'都是字符常量,注意其中'B'和'b'是不同的字符常量。

除了以上形式的字符常量外,对于常用的但却难以用一般形式表示的不可显示字符,C语言提供了一种特殊的字符常量,即用一个转义标识符""开头,后续需要的转义字符来表示。

第三章 数据类型及其运算

第三章 数据类型及其运算知识点提示1.C 的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。

2.C 的运算符种类、运算优选级和结合性。

3.不同类型数据间的转换与运算。

4.C 表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求值规则。

知识点一.C 的数据类型1.数据类型的概念数据类型在高级语言中的实质是为解决数据在程序中的表示(常量)、内存单元的分配(变量)及其加工的描述(算符和表达式)这三个基本问题。

在高级语言中,任何数据都是有类型的,即不同类型的数据有不同的存储属性及操作属性,将数据按其操作属性和存储属性进行分类,就是数据类型的概念。

2.C 的数据类型在C 语言中,数据类型分为基本类型、导出类型(构造类型)、空类型、指针类型。

基本类型有:整型、实型、字符型、枚举类型。

数据有常量与变量之分,它们分别属于这些类型。

3.常量在程序运行过程中,其值不发生变化的量,也就是在程序中直接给出的数据,在词法记号中属于文字。

常量分为字面常量(直接常量)和符号常量。

在C 语言中,符号常量是用无参数的宏定义实现的,即用标识符代表某一字面常量,其定义形式为:#define 标识符(宏名) 字面常量4.变量在程序运行过程中,其值可以改变的量。

变量实质在C 中是为解决不同类型数据在计算机中存储时内存单元的分配问题。

一个变量对应相应的内存单元,且变量有对应的变量名,变量名实际上是内存单元的符号地址。

将变量对应内存单元所存放的当前值,称为变量的值,对变量的访问是按地址进行的,即通过变量名找到相应内存单元的地址,对其存储单元进行读、写操作。

记住:变量的类型、变量名、变量的值是其三大基本属性。

5.整型数据·整型常量的表示方法十进制整数:如123,-456等。

八进制整数:以0为前导的八进制整数。

如0123、-03467,而0879非法。

十六进制数:以0x 为前导的十六进制整数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、指针知识点
四类重要的知识点
(一)、指针及其基本操作
1、运算符*的用途
1)*用于声明中,表示后面跟随的变量为指针变量
2)*用于指针变量前面,表示存取指针变量指向的内存的数据。

强调:每次存取按指针变量的数据类型为单元。

2、指针的加法
1)p+n表示p指向的元素后面的第i个元素的地址
2)*(p+n)等同于p[n]。

由此可见,数组的名字是数组的首地址,数组名字是特殊的指针常量。

3)p[n]是指针的一种操作,表示*(p+n),而非数组的固有操作,数组是特殊的简化的指针的实现。

(二)、New运算符
1、new和delete匹配使用。

new运算符的返回结果是开辟的堆区内存空间的地址。

2、new int(3)和new int[3]的差异:第一个是开辟一个空间,初始化值为3,第二个是开辟3个动态数组。

3、delete p和delete []p的差异。

(三)、指针与函数
1、指针作为形参,可以写为int *或者int []两个形式,表示都是指针。

注意:函数调用是参数传递,传递进来的是指针的值,但是由于操作的内容相同,因此,函数内部对内存的改写将影响到实参后续的内存操作。

2、如果一个函数需要同时对多个实参的值进行改变,可以将多个实参的地址传入,利用指针在函数内部进行操作。

3、指针常量,强调指针的值是常量,不可以改变,但是可以改写指针指向的内存的值;常量指针,强调是具有常量特性的指针,即,指针的值可以改变,但是指向的内存不允许改写。

4、函数指针:函数的名字是函数在代码区的首地址,可以通过给定返回值、形参的形式来声明函数指针。

5、指针作为返回值:由于函数调用后,将会清理掉函数本身的局部变量,因此,作为返回值的指针地址不能是局部变量的地址。

(四)、引用
1、引用就是别名,变量的引用就是变量的别名,对引用的操作就是对所引用变量的操作。

2、一个引用所引用的对象初始化后就不能修改。

另外,引用就是一个别名,声明引用不会再为其分配内存空间,而是与所引用对象对应同一片内存空间。

因此,对引用的操作与对所引用对象的操作效果完全一样。

3、函数的形参是引用的话,函数内部操作的就是实参本身,因为局部变量是外面实参的别名。

二、面向对象知识点
1、类、对象和实例的关系
类是具有相同属性和行为的对象的集合,是抽象的共性的定义;对象是具体的存在的独立单位;实例时由某个特定的类所描述的一个具体的对象。

单独说对象时,即可以指一个对象,也可以泛指一般的对象。

而实例必然是一个具体的对象。

比如,int x;int--类,x--对象,x=5是一个实例(也叫做对象)。

类>对象>=实例
2、继承分为单继承和多继承。

多重继承是指继承具有传递性,即某个父类的成员和方法在后继任意继承层次,子类都将包含。

(课本第八章没有区分多重继承和多继承,如果考察就区分,不考察就认为是通用的概念)
3、聚合和组合。

前者强调聚集在一起,是整体与部分拥有的关系;后者强调组成,是必不可分的关系。

4、构造函数:
1)完成对象的初始化。

一个对象创建(即通过类名声明一个变量)的时候一定会调用某个构造函数。

2)如果累声明中没有构造函数,那么C++会默认创建无参的构造函数;如果已经显示定义了一个构造函数,默认无参构造函数将不会再创建。

3)构造函数名字与类名相同,无返回类型(切记不是无返回值,是两种说法),可以重载。

5、析构函数:
1)函数名字为~类名
2)无返回类型,不可以重载
3)在对象被销毁(作为函数的局部变量,函数运行完毕释放空间时;new出来的堆区存放的对象,被delete时)会自动调用
4)公有的函数(不能被定义为私有)。

但是构造函数可以被定义为私有(意味着这个构造函数外部是不可以调用的)
6、对象成员的访问
1)用对象名+“.”+成员的方式来访问,即“.”为成员访问操作符
2)用对象指针,即一个指针指向的内存中存储的是一个对象,使用->操作符来访问该对象的成员
7、类成员的访问控制
1)public:修饰的成员任意位置均可以访问
2)private:只能声明的类可以访问
3)protected:声明的类及其子类可以访问
4)如果不指定访问控制方式,默认是private
8、拷贝构造函数
是一类特殊的构造函数,其函数声明类似:类名(类名& )
默认C++创建一个拷贝构造函数,实现基于已有的对象来创建新的对象,将成员变量一一赋值给新的对象,这个情况叫做“浅拷贝”
如果显示给出拷贝构造函数的实现,自己定义实现的细节,称为“深拷贝”
9、类声明和类实现分离
1)可以将类声明放在头文件中,将类的成员函数实现放在cpp源文件中
2)在类声明之外来定义成员函数的时候,要用类名::成员函数的方式来指定该成员函数
的作用域,即::是作用域运算符,指定成员函数率属于类
10、类的静态成员
1)static修饰类的成员,表示该成员是所有对象的共享,所被修饰的成员率属于类,不被某个对象独有,而是被所有对象共有
2)类的静态成员需要在类体之外来定义,因为其存在于全局数据区,需要用类似全局变量的方式来定义
3)类的静态成员函数只能访问类的静态成员变量,不可以访问一般成员,因为一般成员属于具体某个对象
4)类的一般成员函数可以访问静态成员函数和变量,即它共有了这些静态的成员,是允许访问的
5)类的静态成员访问,可以使用对象名.成员、对象指针->成员,也可以是类名::成员
11、类的常量数据成员
1)常量成员变量在类声明时不能给以初值,在对象创建时候,在构造函数中才能进行初始化。

一旦初始化,就不能再变了。

2)常量成员函数是指以常量的形式来使用成员变量,即在该成员函数中不能更改成员变量的值
12、this指针
1)用一个对象名来访问该对象的成员函数的时候,该成员函数默认存在的this指针就指向了该对象
2)this指针在成员函数的形参与类成员重名的时候,就可以显示使用this指针来指定操作的是形参,还是类的成员变量
13、类的友元
1)友元是一个类允许类之外的函数、其它类、其它类的成员函数访问该类的私有成员的一种办法
2)使用友元可以提高程序的效率(因为无需通过函数调用来访问私有成员了),但是破坏了封装性(因为可以直接操作它的成员变量)
14、类可以定义其余的类为自己的成员变量
15、类的运算符重载:
1)C++的运算符是一个特殊的函数: operator运算符名
2)运算符重载就是函数重载,有两种方式:方式一,以C语言全局函数方式重载,形参为操作数;方式二,如果左操作数是类对象的话,可以将该运算符在类中重载,作为类的成员函数,这样的成员函数的形参就会减少左操作数。

3)运算符重载的规则要记住。

相关文档
最新文档