类和对象(C++)

6 篇文章 0 订阅

一、什么是类

  • class为定义类的关键字,其后跟类名,{ }中为类的主体,类的定义结尾有分号
  • 类中的元素称为类的成员
  • 类中的数据称为类的属性或者成员变量
  • 类中的函数称为类的方法或者成员函数。

二、定义具有成员函数的类

  • 类的定义包含数据成员和成员函数,他们分别定义类的属性和行为

  • 类的定义开始于后面跟着类名的关键字class

  • 按照惯例,用户自定义类的名字以大写字母开头,并且出于可读性的目的,类名中每个后继单词以大写字母开头

  • 每个类封闭在一对花括号({和})中,并以分号结尾

  • 出现在成员访问说明符public后的成员函数,可以被程序中的其他函数及其他类的成员函数调用

  • 成员访问说明符后总是跟冒号

  • 关键字void是一个特殊的返回类型,它指示函数将执行一项任务,但是完成之后不向主调函数返回任何数据

  • 按照惯例,函数名以小写字母开头并且名中所有后继单词以大写字母开头

  • 函数名之后的一对空的圆括号表名函数执行它的任务时不需要额外的数据

  • 不修改且不该修改调用它的对象的函数应当声明为const

  • 通常在创建类的对象之前,不能调用成员函数

  • 创建的每个新类都成为C++中的一个新类型

  • 在UML中,每个类在类图中建模为具有三个部分的矩形。上部包含类名,中部包含类的属性,下部包含类的操作

  • UML将操作表示为操作名后接圆括号对,操作名前的加号表示这是公有操作(即C++中的公有成员函数)

三、定义具有形参的成员函数

  • 成员函数可以要求一个或多个形参,他们代表成员函数执行其任务所需的额外数据,函数调用为函数的每个形参都要提供实参
  • 通过在对象名之后跟随点运算符、函数名和包含函数实参的一对圆括号来调用成员函数
  • C++标准库string类的一个变量表示一个字符串。这个类定义在头文件中,并且名字string属于名字空间std
  • 函数getline(头文件为),从它的第一个实参读取字符直到遇到换行符为止,然后将这些字符放到指定为它的第二个实参的string变量中
  • 形参列表能包含任意多个形参,包含根本没有,即不需要形参的函数
  • 函数调用中的实参个数和类型必须和称为成员函数头部的形参列表中的形参个数和类型相匹配
  • UML表示操作的形参的方式是在操作名后的圆括号内列出形参名,但其后是冒号和参数的类型
  • UML有它自己的数据类型,并非所有的UML数据类型都和相应的C++类型一样,UML类型String对应C++类型的string

四、数据成员、set成员函数和get成员函数

  • 声明在函数体中的变量是局部变量,只能在其声明之处到它们的声明所在语句块的结束右花括号之间使用
  • 在函数中,局部变量必须先声明后使用,局部变量不能在声明它的函数之外访问
  • 通常情况下,数据成员是私有的,声明为private的变量或函数只对声明它们的类的成员函数或者友元是可访问的
  • 当程序创建(即实例化)类的对象时,它的private数据成员被封装(隐藏)在对象中,只可以被对象类的成员函数(或者类的友元)访问
  • 当指定了非void的返回类型的函数被调用且完成它的任务时,该函数向它的主调函数返回一个结果
  • 默认情况下,一个string对象的初始值是空串,也就是未包含任何字符的字符串,当空串被显示时,屏幕上什么都不出现
  • 类常常提供public成员函数,允许类的客户设置或者获取private数据成员,这些成员函数的名字通常以set或者get开头
  • set函数和get函数允许类的客户间接访问隐藏的数据,客户不知道对象是如何执行这些操作的
  • 类的set函数和get函数应该被类的其他成员函数使用,以操作类的private数据,如果类的数据表示改变,只通过set函数和get函数访问该数据的成员函数将不需要修改
  • 公有的set函数应该仔细审查任何对数据成员值的修改尝试,以保证新的值合乎该数据项
  • UML通过列出后接冒号和属性类型的属性名的形式,将数据成员表示为属性。UML中私有属性之前加减号
  • UML通过在操作名后的圆括号之后添加冒号和返回类型,表示操作的返回类型
  • UML类图对没有返回值的操作不指定返回类型

五、使用构造函数初始化对象

  • 每个类应该提供一个或多个构造函数,在对象被创建时初始化类的对象,构造函数必须用和类一样的名字定义
  • 构造函数和函数之间的一个差别是构造函数不能返回值,因此它们不能指定任何返回类型(void也不可以),通常构造函数声明为public
  • 在每个对象被创建时C++自动调用构造函数,这有助于保证程序中每个对象在使用之前被正确初始化
  • 不带形参的构造函数是默认的构造函数。没有显式定义构造函数的话。编译器会提供一个默认的构造函数
  • 如果程序员为类定义了任何的构造函数,那么C++将不创建默认的构造函数
  • 单形参的构造函数应当声明为explicit
  • 构造函数通过成员初始化列表初始化类的数据成员。成员初始化项出现在构造函数的形参列表和构造函数的体开始的左花括号之间,成员初始化列表与形参列表用一个冒号相分隔。每个成员初始化项由一个数据成员的变量名和紧随其后包含该成员初始值的圆括号对组成。可以在构造函数的体内执行初始化

六、用set函数确认数据的有效性

  • 类string的size成员函数返回一个string对象中字符的个数
  • 类string的成员函数substr返回一个新的string对象,它包含一个已有string对象部分内容的拷贝,第一个实参指定在原始string对象中复制字符的起始位置,第二个实参指定复制字符的个数
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枳洛淮南✘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值