美文网首页
Week3(Boolan)

Week3(Boolan)

作者: DangerousMan | 来源:发表于2017-05-04 15:31 被阅读0次

基于对象的设计OOD--------->面向对象的编程OOP(类之间的关系)

复合Composition:设计模式Adapter,选择功能已经很强大的类中的一些函数开放,更改名字或接口

template <class T,class Sequence = deque<T> >

...

protected: Sequence c;//底层容器,即deque<T> c;

queue先进先出,deque两端都可以进出。

构造由内而外,析构由外而内。

Container::Container():Component(){...};//Component内可能有多个构造函数,当不想使用默认的构造函数时,斜体加粗部分需指明哪些参数。


委托Delegation

也是“拥有”的关系,但是通过指针,也叫Composition by reference。生命周期与Composition不同,指针指向的class被需要时才会被创建。

pimpl( pointer to implementation) 别名 Handle/Body,编译防火墙:

指针指向不同的实现类,服务器端如何实现都不影响客户端

引用计数:

三个字符串共享“Hello”的内容,节省内存。如果想通过指针a更改"Hello"的内容,则copy一份给a改,copy on write.


继承inheritance

形式:classname1 public: classname2:{}

三种继承:private、protected、public.

父类base的数据被完整继承到子类derived(通过内存),函数的继承是通过继承调用权。子类包含父类的一部分,和复合相同,构造由内(父类的构造函数)而外(子类的),析构由外而内。


虚函数virtual function

形式:在任何成员函数前都可加上virtual。

父类可以有多个子类,当成员函数被声明为纯虚函数时,所有子类都必须去定义它


设计模式Template Method:application framework与application分开,关键部分延缓放到子类里设计。通过子类对象调用父类函数。例如:MFC

mydoc.onfileopen(); 等同于 cdocument::onfileopen(&mydoc) mydoc作为this pointer

而在执行父类的函数时,遇到serialize();时,对编译器来说是this->serialize();

Composite:

在容器中存放的必须是相同大小的东西,如指针

包含自身和其他东西时,可设计两者的父类,使指针指向父类。

Prototype:

创建未来的子类,子类创建自己,而父类能够看到并复制子类,创建静态的自己---->调用私有构造函数,add prototype(this),将原型加到父类的原型容器中(自己允许调用自己的私有函数)----->clone函数(new一个自己),通过原型这个对象调用findandclone()来找到需要的原型指针来调用clone函数,再次调用clone函数new的自己需调用一个新的构造函数(protected或private都可以,可通过加一个用不到的参数和之前的构造函数区分开),静态函数虽然不需要对象就能调用,但需要class nameclass内的静态变量必须在class本体外做一次定义(给内存)

参考延伸资料

做作业时查的和QQ群里交流学到的

基类即父类,派生类即子类


有public, protected, private三种继承方式,它们相应地改变了基类成员的访问属性。

1.public继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:public, protected, private

2.protected继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:protected, protected, private

3.private继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:private, private, private

但无论哪种继承方式,上面两点都没有改变:

1.private成员只能被本类成员(类内)和友元访问,不能被派生类访问;

2.protected成员可以被派生类访问


using namespace std;//要写分号!!这也是我为什么总在int main()函数的int上看见提示 应输入; 。。。。。。

在VS2017里,项目里的文件改过名字后会提示错误“必须定义入口点”

这周作业还粗心大意地把前面声明的变量名字在后面引用时抄错了,时间紧迫也没来得及发现并改正了。。。。。。

在不作为右值赋给变量时,意思相同,但++i、--i比i++、i--更快速,效率更高

相关文章

  • Week3(Boolan)

    基于对象的设计OOD--------->面向对象的编程OOP(类之间的关系) 复合Composition:设计模式...

  • Boolan 设计模式-week3

    “对象性能”模式 Singleton 模式:保证一个类仅有一个实例,并提供一个该实例的全局访问点。 补充:http...

  • Boolan Week3笔记

    本周主要讲了 (1)Inheritance 继承 表示 is-a,代码 例如 class A{ …};class ...

  • C++面向对象 Week3——Boolan

    面向对象三大类: Composition 复合 Delegation 委托 Inheritance 继承 一、Co...

  • C++设计模式 week3 (Boolan)

    “对象性能”模式 面向对象很好的解决了“抽象”的问题,但是不可避免地要付出一定的代价。对于通常情况来讲,面向对象的...

  • Scala Parallelization

    Coursera - Parallel Programming Week3 - Data Parallelism ...

  • 复分析

    week3 week3 -柯西-黎曼等式 如果函数 在 出可微: 反之,如果不满足柯西-黎曼等式.则函数在上不可微...

  • 2018-01-03

    Boolan第二周 class with pointer members: Big Three:拷贝构造、拷贝赋值...

  • W3D4

    Week3 Day4 Alibaba revenues rise 54% in ‘blowout quarter’...

  • 5月week3 文献阅读:BloodSpot: a databa

    5月week3 文献阅读:BloodSpot: a database of gene expression pro...

网友评论

      本文标题:Week3(Boolan)

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