前言:时间过的好快,转眼一学期就过去了,期末考试也快到了,所以就复习一遍同时也将自己学习的感悟总结下来。前面几章大多与C语言相似,就不总结了。
第三章——函数
参数传递
1 |
|
通过这个例子,可以看出形参值的改变对实参是无影响的,如果是引用传递的话就另当别论了,看下面这个例子。
可以看出,如果使用引用参数的话是可以改变实参的值,但要注意:
- 声明一个引用时,必须同时对它进行初始化,使它指向一个已经存在的对象
- 一旦一个引用被初始化后,就不能改为指向其他对象
内敛函数
对于内敛函数,我的理解是就相当于一个类中公有类型的成员函数,只不过是放在了类外面,需要在函数返回值类型前加上inline
,而且内敛函数大多都是调用频率很高,而且代码是相对简单的。
带默认形参值的函数
通过这个代码就会理解带默认形参值的函数,但也有几点要注意:
- 有默认值的形参必须在形参列表的最后,因为实参与形参是按照从左到右的顺序建立关系的。
- 在相同的作用域中,不允许在同一个函数的多个声明中对一个参数的默认值重复定义。
函数重载
说白了,就是同一个函数名,但又不同的功能,这就叫函数重载,也需注意:
- 函数重载不以形参名来区分函数
- 函数重载不以返回值来区分函数
第四章——类与对象
类的定义:
class 类名称
{
public:
外部接口
private:
私有成员
};
对象声明:
类名 对象名;
对象访问数据成员:
对象名.
数据成员名
对象调用函数成员:
对象名.
函数成员名(参数表)
成员函数的实现:
返回值类型 类名::
函数成员名(参数表)
{
函数体
}
例如:1
2
3
4
5
6
7
8
9void Clock::setTime(int newH,int newM,int newS) {
hour=newH;
minute=newM;
second=newS;
}
void Clock::showTime() {
cout<<huor<<":"<<minute<<":"<<seconde<<endl;
}
到这才算刚接触到C++,这些便是C++访问成员函数或对象的一些方法。
构造函数
通过这个代码,感觉构造函数有一般成员函数的特征,但构造函数有一些特殊的特征:构造函数的函数名与类名相同,而且没有返回值
复制构造函数
复制构造函数的一般方法
class 类名
{
public:
类名(形参名);//构造函数
类名(类名 &对象名);//复制构造函数
…
};
类名::类名(类名 &对象名);//复制构造函数的实现
{
函数体
}
1 |
|
通过这个代码来了解一下复制构造函数,复制构造函数拥有一般构造函数的所有特性,而它所不同的是形参是本类的对象的引用。作用是使用一个已经存在的对象(由复制构造函数的参数指定),去初始化同类的一个新对象。这个概念理解起来最好是通过代码,这样便于理解。
复制函数有三种情况可以被调用:
- 当用类的一个对象去初始化该类的另一个对象时。
- 如果函数的形参是类的对象,调用函数时,进行形参和实参的结合时。
- 如果函数的返回值是类的对象,函数执行完成返回调用者时。
析构函数
构造对象时,构造函数中分配了资源,动态申请了一些内存单元,在对象消失时需要释放这些内存单元。而析构函数就用来完成对象被删除前的一些清理工作。析构函数是在对象的生产期即将结束的时刻被自动调用的。而且析构函数不接收任何参数。