
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
过程论认为:数据和逻辑是分离的、独立的,程序世界本质是过程,数据作为过程处理对象,逻辑作为过程的形式定义,世界就是各个过程不断进行的总体。对象论认为:数据和逻辑不是分离的,而是相互依存的。相关的数据和逻辑形成个体,这些个体叫做对象,世界就是由一个个对象组成的。对象具有相对独立性,对外提供一定的服务。所谓世界的演进,是在某个“初始作用力”作用下,对象间通过相互调用而完成的交互;在没有初始作用力下,对
命名空间又称为名字空间,是程序员命名的内存区域,程序员根据需要指定一些有名字的空间域,把一些全局实体分别存放到各个命名空间中,从而与其他全局实体分隔开。通俗的说,每个名字空间都是一个名字空间域,存放在名字空间域中的全局实体只在本空间域内有效。名字空间对全局实体加以域的限制,从而合理的解决命名冲突。char val2;在声明一个命名空间时,大括号内不仅可以存放变量,还可以存放以下类型:变量、常量、函
比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。在运行的时候会发现如果出线一次违法操作,就会直接运行结束,且下面的变量结果都是0.如果没有进行正确的输入,输入流会进入failbit的状态,无法正常工作,需要恢复
C++ 预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于自定义的类型是没有办法操作的。当然我们可以定义一些函数来实现这些操作,但考虑到用运算符表达含义的方式很简洁易懂,当定义了自定义类型时,也希望这些运算符能被自定义类类型使用,以此提高开发效率,增加代码的可复用性。为了实现这个需求,C++提供了运算符重载。希望自定义类类型在操作时与内置类型保持一致。能够重载的运算符有42个!>=<=
对于set而言,当Key类型是类类型的时候,那么第二个模板参数Compare默认会采用std::less,但是std::less针对的Key如果不能比较大小,就需要进行改写。模板的特化、运算符的重载、函数对象直接定义一个存放Point的set,编译一定会报错,根本原因在于默认的std::less针对Point对象并不知道该如何比较大小std::less是一个通用模板类,针对解决不了的特殊类型,可以
像C/C++/Java等语言,是编译型语言,先编译后运行。它们都有一个强大的类型系统,也被称为强类型语言,希望在程序执行之前,尽可能地发现错误,防止错误被延迟到运行时。所以会对语言本身的使用造成一些限制,称之为静态语言。与之对应的,还有动态语言,也就是解释型语言。如javascript/python/Go,在使用的过程中,一个变量可以表达多种类型,也称为弱类型语言。因为没有编译的过程,所以相对更难
可以理解为:如果显式定义了拷贝构造和移动构造,利用一个已存在的对象创建一个新对象时,会先尝试调用移动构造,如果这个对象是右值,就使用移动构造函数创建出新对象,如果这个对象是左值,移动构造使用不了,就会调用拷贝构造。总结:将拷贝构造函数和赋值运算符函数称为具有复制控制语义的函数;将移动构造函数和移动赋值函数称为具有移动语义的函数。
只有公有继承自基类的公有成员,可以通过派生类对象直接访问,其他情况一律都不可以进行访问。
(1)覆盖是在虚函数之间的概念,需要派生类中定义的虚函数与基类中定义的虚函数的形式。
缺点:1、由于工厂类集中了所有产品的创建逻辑,职责过重,一旦不能正常工作,整个系统都要受到影响;2、使用简单工厂模式势必会增加系统中类的个数(引入新的工程类),增加了系统的复杂度和理解难度;(比如,如果想要创建梯形、椭圆形之类的图形,还需要改动Factory的代码)3、系统拓展困难,一旦添加了新的产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的拓展和维护4、简单







