4期c++9月21号

一、上午教课的第一个重要知识点是抽象类,对于抽象类在课上已经完全掌握,一下是一些重要的点。

抽象类:带有纯虚函数的类称为抽象类

形式:class类名{virtual类型 函数名(参数表)=0;........}

因为我们生活中的抽象类是顶层的基类,所以抽象类只可以给基类来使用。而且不可以定义抽象类的对象,只能声明抽象类的指针。纯虚函数直到被覆盖前所派生的类均为抽象类。

抽象类的作用:把所用的派生类用一个抽象概念,组织在一个继承结构中,保证派生类中和基类相同动作行为。抽象类无法实现的函数,可以声明为纯虚函数,留给派生类去实现。

二、上午的拷贝构造函数接受的不是很多,因此下午我们要求助教老师给我们大白话式的讲了一遍,已经完全接收。

拷贝构造函数(这部分知识上课已经吸收)

对象的赋值:string name;一个已知对象student a(“abcd”)赋值给另一个已知对象。student b;  b=a;通过对赋值运算符的重载实现。

对象的拷贝:用一个已知对象student s1(“abcd”)构造或者初始化一个新对象。student s2=s1或者student s2(s1);

拷贝构造函数的形式student(student & s)对象的引用;或者student(const student & s);对象的常引用{常引用中的s不能成为左值}

下午助教老师跟我们重新讲解了关于深拷贝的问题。

目的是要给自己定义一个新的拷贝空间,避免浅拷贝同时指向同一个动态空间。

aa(){f=new char[10];}  aa(aa const & s){f=new  char[10];strcpy(f,s.f);}  ~aa(){delete [ ]f;}    char * f;};

int main(){①aa p;   strcpy(p.f,"Computer");cout<<p.f<<endl;   aa q(p);..

首先①把computer拷贝给p此时p会建立一个空间,执行aa q(p);会先执行拷贝函数,这时q会重新建立一个空间,此时p里的会拷贝到q里,在执行析构函数时,会先析构q空间释放,在析构p空间释放。

三、例题错误:如下循环为3,因此all shapes is 3,结果显示为4.

错误原因:在square调用了rectangle,square里面有count++,并且还会运行rectangle里面的count++,重复了一次。

改正方法:把count++写到基类里面。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,541评论 1 51
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,866评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 已经很久没有早起成功了,就像现在我正裹着臃肿的厚棉衣,睡眼惺忪的敲键盘胡说八道,果然好不容易养成的好习惯一旦被破坏...
    Jeromevaleska阅读 319评论 0 0
  • 作为一个Java程序员,我为何要学习数据结构和算法呢?的确现在Java语言已经很强大,它对数组、链表、堆、队列等一...
    禾叶super阅读 703评论 0 2