紧接上次课程,将老师上课内容归纳总结的重点如下:
7、三大函数
(1)拷贝构造:string(const string& str)
拷贝赋值:string& operator=(const string& str)
析构:~string()
(2)析构函数作用是为清理动态分配中的内存;
(3)拷贝赋值函数中不要忘记检测自我赋值。
8、堆、栈与内存管理
(1) stack(栈):是存在于某作用域的一块内存空间。
heap(堆):是指由操作系统提供的一块内存空间,程序可动态分配从某中获得的若干块。
(2)new:先分配memory,在调用ctor。
delete:先调用dtor,再释放memory。
(3)内存空间计算,16进位,调试模式与非调试模式区别。
9、复习string类实现过程
&放在typename后面是reference,放在object前面是取地址,得到一个指针。
10、扩展补充
(1)静态数据只有一份,静态函数没有this point;
(2)类模板和函数模板;
(3)using namespace std 表明标准库全打开,可以直接用,
using std::count 表明只打开了count ,其余要使用时需写全称,例如std::cin。
11、总结
(1)对于标准库的使用,需要在前面打开才能使用,我们一般看到的是简称,是在标准库打开的前提下的使用方法;如果前面未打开,在使用时需要写全称,如std::cin。
(2)关于类成员函数命名m_data,这里为什么要使用m开头?这是采用匈牙利命名法,m代表成员变量(这是在交流群里学习到的)。
(3)在做作业时出现以下错误:error C2661: 'Point::Point' : no overloaded function takes 2 parameters。 出现这个的原因是The specified overloaded function was not declared for the given number of parameters.因此,将h文件中class point进行以下修改:
改为
结果没有错误
(4)程序编写完成后,没有编译错误,但是没有显示结果,运行exe文件后结果如下:
这个问题目前还在解决中。。。