这本书的第十一章讲了运算符重载,我觉得这章 的内容是很重要的。我们知道函数可以重载,而且运算符也是可以重载的, 其实在我们刚开始学习c++的时候就接触到了运算符重载到了<<在我们之前的印象中,这个符号是左移运算符,但是我们这边可以和 cout 配合输出我们一些数据。
我们来看一些例子:
1、cout << "hello world";
2、cout << 3 << endl;
这个就是运算符重载, 运算符重载的格式如下
返回值类型 operator 运算符 (参数列表);
运算符重载的注意点!!!!
1.运算符重载函数名称operator和运算符;
2.不能改变参数的数量
3.不能全部是基本的数据类型, 必须有一个参数是类的类型
4.不能改变运算符的优先级
5.不是所有的运算符都能够重载
6.不能创造新的运算符
7.运算符重载既可以是作为成员函数,也不可以不作为成员函数
几个运算符重载的例子:
class A
{
public:
int m_a[10];
public:
int operator[](int i);
A operator+(A a);
};
int A::operator[](int i)
{
return m_a[i];
}
A A::operator+(A a)
{
A result;
for (int i = 0; i < 10; i++)
{
result.m_a[i] = m_a[i] + a.m_a[i];
}
return result;
}
在main函数里我们就让我们用两个类直接相加了。我们还以直接用类名加 [ ] 来得到我们想要的值了。
十二章主要讲了类和动态内存分配
【注意】当函数按值传递对象或者返回对象的时候都会使用拷贝构造函数。
深拷贝和浅拷贝的区别:
深拷贝:将类中成员变量中带有指针变量重新分配空间,然后将指针执行的内容一一拷贝过去。
浅拷贝就是仅复制指针信息,但是并不会分配内存空间。
静态类成员函数,静态成员函数只能调用静态成员变量,而且不能通过对象调用静态成员函数,静态成员函数不能使用this指针。
成员初始化列表的语法
queue :: queue (int qs):qsize(qs){};
注意点:1、这种格式只能用于构造函数;
2、必须用这种格式来初始化非静态const成员;
3、必须用这种格式来初始化引用数据成员