类和结构体是比较相似,而传统的C的结构体中都是一些数据的类型,类除了有数据之外还有函数。所以可以把类想象成一个具有既有数据又有函数的复合数据类型。
类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。
以股票为例:
股票中的数据类型有:股票的价格,股票的公司,所持股票的量等等。
可执行的操作限制为:获得股票,增持,卖出股票,更新股票价格,显示所持股票的信息。
存储下面的信息:
然后定义类。一般来说,类规范由两个部分组成。
简单来说,类声明提供了类的蓝图,而方法定义则提供了细节。
一般来说把类的定义放在.h文件中,类的成员函数的实现放入.c文件中
凡是出现在private中出现的标识无论是函数还是数据的某个变量某个类型,都只能通过public中的方法间接地去访问它。
GNU nano 6.2 stock00.h
- #ifndef __STOCK00_H__
- #define __STOCK00_H__
- #include
- class Stock
- {
- private:
- std::string company;
- long shares;
- double share_val;
- double total_val;
- void set_totl(){total_val = shares * share_val;}
- public:
- void acquire(const std::string &co,long n,double pr);
- void buy(long num,double price);
- void sell(long num,double price);
- void update(double price);
- void show();
- };
-
- #endif
关键字private和public,它们描述了对类成员的访问控制。使用类对象的程序都可以直接访问公有部分,但是只能通过公有成员函数(友元函数)来访问对象的私有成员。
只能通过public的函数访问private。
控制对成员的访问:公有还是私有
无论类成员是数据成员还是成员函数,都可以在类的公有部分或私有部分声明它。但是由于隐藏数据是OOP主要的目标之一,因此数据项通常放在私有部分,组成类接口的成员函数放在公有部分:否则,就无法从程序中调用这些函数。正如Stock声明所示,可以把成员函数放在私有部分中。不能直接冲程序中调用这种函数,但是公有方法却可以使用它们。通常,程序员使用私有成员函数来处理不属于公有接口的实现细节。
不必在类的声明中使用关键字private,因为这是类对象的默认访问控制:
- class World
- {
- float mass;
- char name[20];
- public
- void tellall(void)
-
- };