【C++基础】系列博客为参考《C++ Primer中文版(第5版)》(C++11标准)一书,自己所做的读书笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
1.类简介
在C++中,通过定义一个类(class)来定义自己的数据结构,可以定义使用上像内置类型一样自然的类类型(class type)。
如前所见,为了使用标准库设施,我们必须包含相关的头文件。类似的,我们也需要使用头文件来访问自己的应用程序所定义的类。
通过使用.h作为头文件的后缀,但也有一些程序员习惯.H、.hpp和.hxx。
标准库文件通常不带后缀。
包含来自标准库的头文件时,应该用尖括号(<>)包围头文件名。对于不属于标准库的头文件,则用双引号(“”)包围。例如:
1
2
#include<iostream> //不需要加.h后缀
#include "Sales_item.h" //需要加.h后缀
每个类实际上都定义了一个新的类型,其类型名就是类名。例如:
1
Sales_item item;
类似int
、float
等内置类型,我们定义了一个Sales_item
的类类型。上述代码中,item
是一个Sales_item
类型的对象,即类对象。
1.1.Sales_item对象的加法
1
2
3
4
5
6
7
8
9
#include<iostream>
#include "Sales_item.h"
int main()
{
Sales_item item1,item2;
std::cin >> item1>>item2;
std::cout<<item1+item2<<std::endl;
return 0;
}
例如输入内容为:
0-201-78345-x 3 20.00
0-201-78345-x 2 25.00
则输出为:
0-201-78345-x 5 110 22
使用了一个全新的“和”的概念,“和”的计算方式被定义在Sale_item类内。
1.2.文件重定向
为避免反复从键盘敲入数据作为程序的输入这一乏味机械的操作,可以使用文件重定向:
$ addItems <infile>outfile
假定$
是操作系统提示符,1.1部分的加法程序已经编译为名为addItem.exe的可执行文件(在UNIX中是addItems),则上述命令会从一个名为infile
的文件读取数据,并将输出结果写入到一个名为outfile
的文件中,两个文件都位于当前目录中。
2.初识成员函数
但是将两个Sales_item
对象相加的程序首先应该检查两个对象是否具有相同的ISBN。代码示例见下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include "Sales_item.h"
int main()
{
Sales_item item1,item2;
std::cin >> item1>>item2;
//首先检查item1和item2是否表示相同的书
if (item1.isbn() == item2.isbn()){
std::cout<<item1+item2<<std::endl;
return 0; //表示成功
}else {
std::cerr << "Data must refer to same ISBN" << std::endl;
return -1;//表示失败
}
}
其中,if
语句的检测条件:item1.isbn() == item2.isbn()
调用名为isbn
的成员函数(member function)。成员函数是定义为类的一部分的函数,有时也被称为方法(method)。
👉点运算符:
通过类对象来调用成员函数,例如:item1.isbn
。使用点运算符(.)来表达我们需要“名为item1
的对象的isbn
成员”。
⚠️点运算符只能用于类类型的对象。
👉调用运算符:
用点运算符访问一个成员函数,使用调用运算符(())来调用一个函数。调用运算符是一对圆括号,里面放置实参(argument)列表(可能为空)。