C++ Primer Plus 第10章 对象和类

第10章对象和类

1、OOP的特性

※抽象

※封装和数据隐藏

※多态

※继承

※代码可重用

2、类抽象

处理复杂性的方法之一是简化和抽象,OOP当中对于一个对象从用户的角度,描述对象所需要的数据以及与数据交互所需要的操作(接口),C++当中用户定义类型指的是实现抽象接口的类设计。

3、C++当中的类

C++当中,类由两部分组成:数据和成员函数。数据部分是类存储的内容,成员函数则是类与外部的接口

类规范由两部分组成:类声明和类方法实现。一般将类声明放在一个文件当中,类方法实现放在另一个文件,即声明和实现分离,这也是一种数据隐藏和封装的手段。类声明提供了类的蓝图,而类方法则实现成员函数,提供细节。

4、类的访问控制

关键字private、public和protected描述了对类成员的访问控制。使用类对象的程序都可以直接访问公有部分,但只能使用公有成员函数或者友元函数来访问对象的私有成员。

防止程序直接访问数据称为数据隐藏。公有成员函数则为程序和对象的私有成员之间的桥梁。

5、类和结构的区别

类和结构的唯一区别在于:结构的默认访问类型为public,而类的默认访问类型为private。

6、类成员函数

※定义类成员函数时,使用作用域解析运算符::来标识函数所属的类

※类方法可以访问类的私有成员

7、内联函数

定义位于声明内的函数会自动成为内联函数;

也可以在类外声明函数,使其成为内联函数,使用inline限定符。

8、一般在数据成员名前加上m_,例如m_company

9、构造函数

构造函数的作用是为了初始化类对象。

(1)  声明构造函数

构造函数的名称和类名称相同。例如,Stock(const string& co, long n=0,doublepr=0.0)

(2)  使用构造函数

C++提供两种使用构造函数来初始化对象的方式:

第一种为显式调用构造函数:Stock food=Stock(“world”,250,1.25)

另一种为隐式调用构造函数:Stock garment(“Furry”,50,2.5),等价于Stockgarment = Stock(“Furry”,50,2.5)

动态对象:Stock *pc=new Stock(“Popo”,30,2.5)

(3)  默认构造函数

如果不定义构造函数,那么编译器会自动产生一个构造函数,Stock::Stock(){}

,但是为类定义了构造函数后,就必须为它提供默认构造函数!!!

定义默认构造函数的方式有两种:

①第一种是给所有参数提供默认值

Stock(const string &co=”Error”, int  n=0, double pr=0.0)

②通过函数重载来定义另一个没有参数的构造函数

Stock()

10、析构函数

构造函数创建对象后,程序跟踪对象,直到其过期为止,然后调用析构函数来完成清理工作。

析构函数没有参数,原型为:~Stock()。

11、C++列表初始化

C++11中,可以使用列表初始化来初始化对象,

Stock jock={“Derivation”,100,45.0}

12、const成员函数

如果要求类成员不修改调用的对象,则应将该成员声明为const,例如,

void stock::show()const

13、this指针

this指针指向用来调用成员函数的对象,this为对象的地址,*this才是对象本身。如果需要显式地调用对象,可以使用this。

14、对象数组

一旦声明和定义了类,那么类就类似于普通的内置数据类型,所以可以声明对象数组:Stock stuff[4]

15、类作用域

在类中定义的名称的作用域都为整个类,作用域为整个类的名称只在该类中是已知的,在类外则未知。

(1)   作用域为类的常量

使符号厂里的作用域为类有两种方法:

①第一种方法实在类中声明一个枚举,其作用域为整个类。这种方式声明枚举并不会创建数据成员,即所有对象都不会包含枚举,在作用域为整个类的代码中遇到它时,编译器将用12替换它。

class Bakery

Private:

        enum {month=12};

double costs[month];

……

②第二种方式是使用关键字static

class Bakery

private:

static const int month=12;

double costs[month];

……

16、类很适合描述抽象数据类型ADT,例如栈stack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值