0. 前言
本来想着不再更这部分的,觉得写的博客越来越没有深度。
但是后来一想,还是觉得敲一遍,哪怕是仅仅是为了加深一下印象。
1. 计算机和C++简介
面向对象编程的核心思想——软件重用( software reuse ):
使用“模块化”方法来创建程序,避免重复工作,尽量利用现有的构件。
对象技术介绍
- 成员函数和类:成员函数拥有实际执行其任务的任务语句。类包含了执行该类自己任务的成员函数集合。
- 实例化:构建对象的过程称作实例化,一个对象叫作它的类的一个实例。
- 重用:构建新的类和程序的时候,重用已有的类可以节省时间和精力。重用还有助于构建更加可靠和有效的系统,因为已有的类和组件常常经过了大量的测试、调试以及性能改进。
- 消息和成员函数调用:可以向对象发送消息,每条消息都被实现为一次成员函数调用,告诉对象的成员函数去执行它的任务。
- 属性和数据成员:一个对象在程序中使用时,具有伴随它的属性,这些属性被详细说明为对象的类的一部分。属性由类的数据成员来详细说明。
- 封装:类将属性和成员函数封装在对象中,实现的细节隐藏在对象自身中。信息隐藏对良好的软件工程是至关重要的。
- 继承:可以通过继承(inheritance)快速和方便地创建一个新的对象类——该新的类可以吸收已有类的特性,有可能定制和添加它自己独特的特性。
- 面向对象分析与设计(OOAD):为了得到最佳的解决方案,确定项目的需求(即定义该系统应该做什么)和开发出满足这些需求的一份设计(即决定系统应该怎样做)应该遵循一个详细的分析过程。如果此过程中分析和设计系统是从面向对象的角度来考虑的,那么就成为面向对象分析与设计(OOAD)。
- UML(统一建模语言):任何OOAD过程的结果都可以统一用一种广泛使用的图形语言来表达和交流,这种语言称作统一建模语言(Unified Modeling Language, UML),是目前应用最广泛的、用于面向对象建模的图形建模语言。
典型的C++程序开发环境
- 编辑:使用集成开发环境(IDE)
- 预处理:通常是包含其他要编译文件的文本和实现各种文本替换
- 编译:将C++程序翻译成机器语言代码
- 链接:将目标代码和在别处定义的函数和数据引用的代码连接起来,形成可执行程序
- 载入:将可执行程序放入内存
- 执行:
重构( software reuse ):在保持程序原来的正确性和功能的基础上,对程序进行返工使代码更加清晰,更容易维护。
2. C++编程入门、输入/输出和运算符
int main()
{
... ...
return 0;
}
- 需在每个程序的
main
的左边加上关键字int
。 - 根据C++标准,如果程序执行到
main
的末尾但没有遇到return
语句,就会认为程序成功地终止了,可省略。 - 函数体代码缩进一级,可使函数结构更清晰,程序更易读。
- 要保持注释与代码的同步。
using namespace std;
使程序可以使用程序包含的任何标准C++头文件中的所有名字。- 如果将一条语句分割成两行或者多行,应该缩进后面的行,并且左对齐。
3. 类、对象和字符串的介绍
部分内容见上篇博客 VS17使用问题汇总及《C++大学教程》第三章 类的练习。
- 通常,本书中所要开发的程序将由main函数和一个或多个类组成。每个类包含数据成员和成员函数,它们分别定义了类的属性和行为。
class GradeBook
{
public:
void displayMessage() const
{
cout << "Welcome to the Grade Book!" << endl;
}
};
- 关键字
class
后紧跟的是类名;
public
是一个成员访问说明符,出现在public:
之后的成员函数可以被程序中的其他函数(如main
函数)以及其他类的成员函数所调用;
const
指该函数不应当修改调用它的对象。 getline( cin, nameOfCourse );
从标准输入流对象cin
(即键盘),连续读取字符(包括分隔输入中的单词的空格),直到遇到换行符为止(丢弃换行符)。- 类的所有成员函数都可以操作类定义中出现的任何数据成员。
- 始终设法控制数据成员的改变所影响的范围,采用
get
函数与set
函数来访问和操作数据成员。
class GradeBook
{
public:
explicit GradeBook( string name )
: courseName( name )
{
}
... ...
... ...
private:
string courseName;
};
- 构造函数用于类对象创建时它的初始化,定义是必须与类同名,且不能返回值。
- 成员初始化项出现在构造函数的形参列表和构造函数的体开始的左花括号之间,用一个冒号分隔。每个成员初始化项由一个数据成员的变量名和包含该成员初始值的圆括号对组成。若有多个数据成员,每个数据成员的初始化项用逗号前后分开。
- 默认的构造函数一般不初始化类的数据成员,如,类string的默认构造函数将这个类对象的值设置为空串。可使用构造函数初始化对象。
#include " "
的查找位置是当前源文件所在目录。首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于自定义的头文件,让系统优先使用当前目录中定义的。
#include < >
的查找位置是标准库头文件所在目录。- 有时构造函数还必须在构造函数的体内确定它的实参的数据有效性。
- 标准类
string
提供了成员函数substr
,返回一个新的string
对象。第一个实参说明在原始字符中开始复制字符的起始位置,第二个实参指定了复制的字符个数。 cerr
:输出到标准错误的ostream对象,常用于程序错误信息。
结语
把前三章更一下,四到六章已看完,回头更。
来H即将四个月,还是控制不住的迷茫,还是没有定下来自己的Focus。
个人水平有限,有问题欢迎各位大神批评指正!