c++之前一直是用来刷题的,只是当作有标准库的c来用,没有做过相关的项目,所以没有C++面向对象开发的经验。既然打算找一个C++相关的工作,就准备深入学习一下C++的语言特性,有时间的话做一些C++项目。
今天看《大话设计模式》的时候看到了面向对象的一些基本概念,用自己的语言记录一下,让印象深刻一些。
首先对象是一个实物,包含一些属性和一些方法。类是提前写好的对象的定义,这样我们就可以复用对象了。举例来说,定义了二叉树类,并放在一个头文件中,不用在每次想用二叉树的时候都重写一个二叉树结构,只需要引用这个头文件即可。
定义了类之后,对象就是类的具体实物。我们需要一棵二叉树时,生成一个对象。
Class BinaryTree{};
BinaryTree myTree();
对象创建时,调用构造函数。调用函数名和类名相同,无返回值。可以定义多个有不同参数类型或个数的构造函数来定制有不同属性值的对象。
常用的成员修饰符有三种:public, protected, private。private的属性或方法只允许类中成员访问,子类也不能访问。protected修饰的成员可以被子类访问。
继承:当两个类具有A是B(比如猫是动物,狗是动物)的关系时,常常令A继承B。
在代码中,A可以使用B的非private成员,也可以重写父类的方法。A为子类,B为父类。
多态:目前理解的多态就是方法重写。父类把函数声明为virtual虚函数,子类通过override关键字来实现虚函数。当子类以父类的身份出现时,子类不得使用自己有但父类没有的成员,调用虚函数时会使用子类重写的函数。即运行时类型,而非编译时类型。
继承与多态出现的时机常常是因为有许多重复的代码。例如猫和狗可能有一些动物都有的行为,把这些重复提取出来作为一个父类,使得子类能够重用父类的代码。
有的时候这些父类是没有意义的,比如我们不会使用动物类,而是使用具体的动物时,可以把类声明为abstract抽象类。
abstract抽象方法和virtual虚方法的区别是抽象方法没有函数体,必须由子类实现。拥有抽象方法的类必须为抽象类。
委托delegate与事件event:
委托有点类似于stub。golang里面客户端访问服务器端时会访问本地的stub,再由grpc调用远端服务器的函数来实现这一功能。
声明事件时会指定它的处理函数,常常是一个委托函数。当该类在其他函数里产生这个事件时,事件调用委托函数,委托函数通知所有在自己这里注册过的函数,并且可以告知sender和一些args。
原文链接: https://www.cnblogs.com/refactor-ab/p/12775526.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/344378
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!