第8章 对象和类

一、对象和类

1.对象是类的实例

  (对象是一个具体可确定的东西,

     比如我正在用的这支笔或者放在桌子上的那个苹果,

     类可以是笔、水果这一类事物的名称)

2.对象的特征:

标识,对象的名字

状态,对象的数据成员

行为,对象的成员函数

3.类的成员

私有成员(private)

信息隐藏:被声明为private的数据成员只能被这个类的成员函数访问,其他的非成员函数无权访问

信息隐藏的目的:防止成员在类外被修改

访问:类的私有数据成员只有通过这个类的共有函数访问

公有成员(public)

类的公有成员函数可以在程序的任何部分调用,私有成员函数只能在同一个类的成员函数中调用

公有成员函数称为类的公共接口

一般地,类的数据成员声明为私有成员,成员函数都声明为公有成员

通常把公有成员放在类的开始部分,位于私有成员的前面

4.类的定义和使用对象

使用类的正确方法是:在main( )函数之前定义这个类和它的成员函数,然后在main函数中定义和使用这个类的对象

5.抽象数据类型

数据类型的实现细节对程序员是隐藏的,称为数据抽象

对于一个特定的数据类型,只需要了解哪些函数和操作可以使用、这个数据类型的合法取值范围即可

例如:

double类型取值范围在2.22507e-38 到1.7976e+38

平方根函数sqrt( )适用于整型和浮点型

6.构造函数:

数据的自动初始化中发挥重要作用,也常用于对象的私有数据成员初始化

构造函数是函数名和类名相同的类成员函数,当这个类被创建,构造函数会自动调用

构造函数永远不会被显式地调用,所以不能返回一个数据值,因此没有返回类型

构造函数特征:1 函数名与类名相同  2 无返回值类型

一个类中可以有若干个参数个数不同的构造函数,因此构造函数也可以被重载

经常在构造函数中数据成员的初始化列表来代替赋值语句

Account::
Account( int No, float initial_balance)://这里有个冒号
              Number( No ),balance(initial_balance)//数据成员的初始化
{
}//注意这两个大括号不能省略

静态类数据成员

静态类数据成员独立于从类中创建的所有对象。→必须在类外对静态类数据成员赋值

静态数据成员对于类的所有对象只有一个副本,被该类的所有对象共享。

如果该类的一个对象修改了静态数据成员的值,那么该类的每个对象中它的值都会随之改变。

关键字:static

例:

class
{
  private:
    static int a;//a也被称为类变量,与类有关
    int b;//b被称为实例变量,与对象有关 };

类的成员函数也可以用return语句返回一个值

读值函数

double Account::get_balance()
{
    return balance;
}

成员函数get_balance被称为检查或读值函数

读值函数允许在类外读取类的私有数据成员的值

设值函数

void Account::deposit(double amount)
{
    balance += amount;
}

void Account::withdraw(double amount)
{
    balance -= amount;
}

像deposit()和withdraw()这样的成员函数称为设值函数

设值函数用来修改类的私有数据成员的值

内联成员函数

类的成员函数可以是内联的

方法:1 加关键字inline;2 把函数定义在类内。

类的公共接口:一个成员函数的列表以及使用他们的方法。从关键字public开始 private结束。

类的实现:类的私有部分和成员函数的内部实现细节

命名空间:命名空间就是程序中的一个语句块。

在一个命名空间里,标识符的名字必须是唯一的,尽管这个名字先前可能在其他命名空间内使用了。

有两种方法可以区分两个同名的类

1 使用作用域运算符::

2 使用using语句


 

 易错警示

1.类的声明花括号{ } 后有分号;    !!!分号分号分号

2.构造函数无返回值类型

3.非内联函数使用作用域运算符 ::

4.在类中,成员的默认访问权限是私有的,如果要把一个成员函数指定为公有的记得加public

 

posted @ 2022-06-10 09:34  杏花疏影  阅读(105)  评论(0)    收藏  举报