美文网首页
4期c++9月21号

4期c++9月21号

作者: 刘博zero | 来源:发表于2017-09-21 19:40 被阅读0次

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

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

    形式: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++写到基类里面。

    相关文章

      网友评论

          本文标题:4期c++9月21号

          本文链接:https://www.haomeiwen.com/subject/irstextx.html