1.一些概念
OOP(object oriented programming)面向对象编程。
不必在类声明中使用关键字private,这是类对象的默认访问控制。
类和结构之间唯一的区别是,结构的默认访问类型是public,而类为private。通常使用类来实现类描述,而把结构限制为只表示纯粹的数据对象或没有私有部分的类。
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091006/1.jpg
2.内联方法
定义在类声明里的函数都将自动成为内联函数,因此Stock::set_tot()是一个内敛函数。类声明常将短小的成员函数作为内联函数。如果愿意,也可以在类声明之外定义成员函数,使其成为内联函数,为此,只需加上inline限定符即可:
内联函数的特殊规则要求在每个使用它们的文件中都对其进行定义。确保内联定义对多文件程序中的所有文件都可用的、最简单的方法是:将内联定义放在定义类的头文件中。
3.客户/服务器模型
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091006/2.jpg
4.构造函数
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091006/3.jpg
构造函数被用来创建对象,而不能通过对象来调用。
如果没有提供任何构造函数,则C++将自动提供默认构造函数。它是默认构造函数的隐式版本,不做任何工作。对于Stock类来说,默认构造函数可能为Stock::Stock(){}。奇怪的是,当且仅当没有定义任何构造函数时,编译器才会提供默认构造函数。为类定义了构造函数后,程序员就必须为它提供默认构造函数。
定义默认构造函数方式有两种(没有参数或所有参数都有默认值):
Stock();
Stock(const char * co = "Error", int n=0, double pr = 0.0);
由于只能有一个默认构造函数,因此不要同时使用上面两种方式。
使用构造函数3种方法:
Stock garment("Furry Mason",250,1.25); //隐私调用构造函数
Stock garment = Stock ("Furry Mason",250,1.25); //显示调用构造函数(可能产生一个临时对象)
Stock *pstock = new stock ("Furry Mason",250,1.25);
在为对象数组赋初值的时候,可以用如下的格式:
Stock stocks[4] = {
Stock ("aa",130,23.4),
Stock ("bb",153,3.4),
Stock (), //不同的构造函数
Stock ("cs",13,2)
};
通过函数重载,可以创建多个同名的构造函数,条件是每个函数的特征标(参数列表)都不同。另外,接受一个参数的构造函数允许使用赋值句法来将对象初始化为一个值:Classname object = value;
假设有这样一个构造函数原型:Bozo (int age); 则按上面所讲可以这样初始化: Bozo tubby = 32; 也可以按前面所说方法来初始化: Bozo dribble = Bozo (44); Bozo roon (66);
5.const成员函数
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091006/4.jpg
6.this指针
所有的类方法都将this指针设置为调用它的对象的地址。每个成员函数都有一个this指针。this指针指向调用对象。如果方法需要引用整个调用对象,则可以使用表达式*this。在函数的括号后面使用const限定符将this限定为const,这样将不能使用this来修改对象的值。
7.作用域为整个类的常量
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091006/5.jpg
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091006/6.jpg
8.抽象数据类型栈的类表述
下面模拟了售货员的行为:使用堆栈的后进先出方式,从购物筐的最上面开始处理购物订单。