C++ primer 十二 C++中的类(一)
来源:互联网 发布:淘宝手机号解除绑定 编辑:程序博客网 时间:2024/05/17 22:55
类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。
一般来说,类规范由两个部分组成。
•类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口。
• 类方法定义:描述如何实现类成员函数。
简单地说,类声明提供了类的蓝图,而方法定义则提供了细节。
看下面的代码:
stock00.h文件:
#ifndef STOCK00_H_
#define STOCK00_H_
#include<string>
class Stock//class declaration
{
private:
std::string company;
long shares;
double share_val;
double total_val;
void set_tot()
{
total_val=share_val*shares;
}
public:
void acquire(const std::string &co,long n=0,double pr=0);
void buy(long num,double price);
void sell(long num,double price);
void update(double price);
void show();
};
#endif
首先,C++关键字class指出这些代码定义了一个类设计(不同于在模板参数中,在这里,关键字class和typename不是同义词,不能使用typename 代替class)。这种语法指出,Stock是这个新类的类型名。该声明让我们能够声明Stock类型的变量—— 称为对象或实例,每个对象都表示一支股票。例如,下面的声明创建两个Stock对象,它们分别名为sally 和 solly:
Stock sally;
Stock solly;
接下来,要存储的数据以类数据成员(如company和shares)的形式出现。例如,sally的company 成员存储了公司名称,share成员存储了Sally持有的股票数量,share_val成员存储了每股的价格, totai_val成员存储了股票总价格。同样,要执行的操作以类函数成员(方法,如sen()和update。)的形式出现。成员函数可以就地定义(如Set_tot()),也可以用原型表示(如其他成员函数)。其他成员函数的完整定义稍后将介绍,它们包含在实现文件中;但对于描述函数接口而言,原型足够了。将数据和方法组合成一个单元是类最吸引人的特性,有了这种设计,创建Stock对象时,将自动制定使用对象的规则。
访问控制
关键字private和public描述了对类成员的访问控制。使用类对象的程序都可以直接访问公有部分,但只能通过公有成员函数(或友元函数〉来访问对象的私有成员。例如,要修改Stock类的shares成员,只能通过Stock的成员函数。因此,公有成员函数是程序和对象的私有成员之间的桥梁,提供了对象和程序之间的接口。防止程序直接访问数据被称为数据隐藏。
类设计尽可能将公有接口与实现细节分开。公有接口表示设计的抽象组件。将实现细节放在一起并将它们与抽象分开被称为封装。数据隐藏(将数据放在类的私有部分中)是一种封装,将实现的细节隐藏在私有部分中,就像Stock类对set_tot( )所做的那样,也是一种封装。封装的另一个例子是,将类函数定义和类声明放在不同的文件中。
控制对成员的访问:公有还是私有
无论类成员是数据成员还是成员函数,都可以在类的公有部分或私有部分中声明它。但由于隐藏数据是OOP主要的目标之一,因此数据项通常放在私有部分,组成类接口的成员函数放在公有部分;否则,就无法从程序中调用这些函数。正如Stock声明所表明的,也可以把成员函数放在私有部分中。不能直接从程序中调用这种函数,但公有方法却可以使用它们。通常,程序员使用私有成员函数来处理不属于公有接口的实现细节。
不必在类声明中使用关键字private,因为这是类对象的默认办问控制:
class World
{
float mass;
char name[30];
public:
void tellall(void);
...
};
- c++Primer,十二,类
- C++Primer读书笔记(十二)
- C++ primer 十二 C++中的类(一)
- 跟随c++primer学c++(十一、十二章)
- C++primer中类(一)
- 《C++primer》读书笔记一 类
- C++Primer读书笔记(一)
- C++Primer观后感(一)
- C++primer读书笔记(一)
- c++primer 笔记(一)
- C Primer Plus(一)
- C++primer学习心得(一)
- C++Primer 笔记(一)
- C++primer知识点(一)
- C++Primer读书笔记(一)
- 【C++Primer】(一)
- 《C++primer》读书笔记一
- C语言中的一些关键字(十二)
- Bootstrap图片旋转轮播的实现
- 二维码操作工具类QRCodeUtils
- 下载网络图片&&网络工作在主线程异常,Handler
- VBox下Linux与PC的Windows共享文件夹
- bc Kblack loves flag
- C++ primer 十二 C++中的类(一)
- Filter
- sqlite命令行下操作
- SQL 常用命令
- html 内联 块级元素,浏览器内核,css继承性
- cocoapods 升级到1.1.1 ,swift升级3.0
- java中继承的重点掌握
- linux shell中 /dev/null 2>&1 含义
- 【oracle】plsql连接oracle(localhost连接成功,ip连接提示无监听)问题