本周的内容是基于第一周的内容,同样是有关基于类的C++类设计过程。本周的类与上周类唯一不同在于,本周的string类内部有指针成员变量,在初始化时需要为指针分配内容,而上周的complex类只有两个double类型的成员变量。
有指针和无指针的类在构造和析构过程中,有较大区别。但他们都有相同之处:
1. 在程序中实例化类的对象时,都是先创建内存,然后调用类的构造函数。这一点,在第8节课里有重要的讨论
2. 都有相同名称的构造函数和析构函数,都需要初始列成员变量,都可以有多个备选的构造函数
3. 成员函数都被保护起来
不同之处就比较重要了。在有指针的类中:
1. 构造函数需要根据传入参数动态分配内存并让成员指针指向该内存
2. 析构函数负责把构造函数中分配的内存释放,归还给操作系统,否则会产生内存泄漏(memory leak)
3. operator =拷贝赋值操作符,为了完成深拷贝而不是浅拷贝,要先释放内存,重新分配后,再复制要完成复制的内容
4. operator =复制操作符中,为了防止自我赋值中把自己要复制的内容先释放了,预先进行判断
5. operator =拷贝赋值同样需要返回对象引用,供用户连续拷贝6. 拷贝构造、拷贝复制、析构是三个特殊函数(Big Three)
本周还涉及了一些模版类的简单知识。以及函数模版。模版类可以在只写一份代码的情况下,由编译器自动根据需要产生多份代码,对程序员来说,非常方便。
最后,还有很多其他内容没有完全涉及到的内容。但是我觉得,那些才是C++设计的精髓。这门课的价格有些虚高了。
网友评论