C++第一步介绍
结构化程序设计与面向对象程序设计的区别
结构化的程序设计中,数据和程序代码是分离的;而面向对象程序设计将数据和操作数据的程序代码绑在一起构成对象。
面向对象程序设计中的基本术语
对象
对象由属性和行为组成,具体特征如下:
- 有一个名字以区别于其他对象。
- 有一个状态用来描述它的某些特征,这个状态称为属性。
- 有一组操作,每个操作决定对象的一种功能或者行为,包括针对自身的操作或者施加于其他对象的操作。
类
类是一组具有相同数据和相同操作的对象的集合。
实例
实例是某个特定的类所描述的一个具体的例子。
属性
属性是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。
消息
对象之间的联系是通过消息传递来实现的,消息分为公有消息(外界发送给自己的)和私有消息(自己发送给自己的)。消息具有以下特点:
- 同一个对象可接受不同形式的多个消息,产生不同的响应。
- 相同形式的消息可以发给不同的对象。
- 消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以不予理会。
方法
方法是对象所能执行的操作或所具有的行为。
多态性
多态性通过重载和虚函数两个方面来实现。重载称为编译时的多态性,虚函数称为运行时的多态性。
引用
在变量声明时出现的&
才是引用说明符,例如int & b = a
。
建立引用的注意事项
int a, b[8];
int &&aa = a; // 错误,aa是引用的引用
int &ib[6]; // 错误,ib是引用数组
int &bb = b; // 错误,bb是数组的引用指针
int &*ap = a; // 错误,ap是指向引用的指针
int *pi = &a;
int *&pr = pi; // 正确,pr是指针的引用
带有默认参数的函数
在定义带有默认参数的函数时,一旦某个参数取默认值,其右面的所有参数都必须指定默认值。例如:
int add(int i, int j = 5, int k); // 错误
同时,不允许某个参数省略后,再给其右面的参数指定参数值,例如:
add(, 5, 4); // 错误
内联函数
如果一个函数被定义为内联函数,在编译时,C++将用内联函数的程序代码替换对它的每次调用。内联函数的定义格式如下:
inline 返回值类型 函数名(形式参数)
{
// 函数体
}
使用内联函数需要注意以下几点:
- 内联函数体内不能有循环语句和
switch
语句。 - 内联函数必须声明在第一次调用以前。
- 在类内定义的成员函数被默认认为内联函数。
返回引用
以下是返回引用的示例及错误情况分析:
int add(int x, int y)
{
return x + y; // 正确
}
int & add(int x, int y)
{
return x + y; // 错误,当函数返回一个引用时,不可以使用表达式
}