1.21 C++复习

------------恢复内容开始------------

------------恢复内容开始------------

1. 一个变量数值上设定存在两阶段。初始化->赋值。

2. overloading的函数不能有歧义。
complex(double a=0, double b = 0) //有初始值 可以被覆盖也可以无参数构造。 eg: complex c1() ;

3. double real() const { return re; }. //表示此函数不改变 object内部数据内容

4. friend  函数名()  //指明友元函数所能操纵的private data

5. 操作符就是一种函数,  c1 += c2 (c1为左操作数,c2为右操作数)。重载的时候查看左操作数是否重写函数。

6. 成员函数参数中藏有一个this pointer(指向调用者)

7. return by reference。       

8. 拷贝函数和拷贝赋值,默认是1bit,1bit复制。

9. complex c1(1,2)//     空间开辟在stack上,被称为localobj,析构函数自动调用

 new 分成3步:1. 分配空间(调用void* mem = operator new(sizeof(Class)) 约等于 malloc

         2. 转型 pc = static_cast<Complex*>(mem);

         3. 调用构造函数 pc->Complex::Complex(1,2);  //Complex::Complex(this,1,2) 成员函数woc,他个der含有一个thispointer 

  delete 分为两步:

        1.调用析构函数 String::~String(ps);  //

        2.释放内存  operator delete(ps);              //底层调用free 

 PS:new array[N] 需要对应 delete array[N];  目的是调用足够数量的析构函数。

10. 不属于任何一个scope的被称为全局对象。

Static function.  与一般函数一样只在内存中有一个,但自身不具备this指针,他只能处理静态数据。

        static的调用:1. 通过obj 2. 通过 classname 调用。

 

Static variable    class内声明,class外定义。  只有在定义的时候才分配内存 //且只存在一份 

        函数内创建过 static variable之后,才会创建。

11. funciton template(函数模版)    

------------恢复内容结束------------

 

 

设计模式(composition 复合)

1. adapter(适配器)

    container ---> component  // 容器含有一个内在类

  构造时,先构造内部component 再构造外部container。//默认component的构造函数调用default版

  析构时,先析构外部container 再析构内部component //相反

 

2. Delegation(委托)(composition by reference)

   container ----> component //容器中含有一个 pointer 指向component 

  与composition 复合不同的地方,内部所含的component 其生命开始不一定是随着container的出现而出现,而是在真正调用的它的时候才出现

  copy on rid. 在需要修改的瞬间,复制出一个。

 

3. Inheritance()

  public 继承(还可以 private protected继承),创建子类前先得有父类,顾会先调用父类constructor。//析构则由外而内,

 

 因此,父类的deconstructer 必须是虚函数。 只有这样,才能在释放子类的时候动态绑定到他

  

 虚(virtual)函数

 virtual (return type) func() =0 //纯虚函数,子类一定要定义

 virtual (return type) func()// 有定义,子类不一定要重写,只是被开放了权限

non-virtual 函数则不希望子类重写  

 

 

 

Delegation + inheritance

文件系统设计模式  //primitive 类比文件item,composite类比目录。目录中既需要文件有需要子集目录。

 

 Prototype 模式。(hard 不理解。)

 

------------恢复内容结束------------

posted on 2022-02-06 20:07  ReadyLoveMiku  阅读(17)  评论(0编辑  收藏  举报