摘要:
1、虚基类的作用从上面的介绍可知:如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避免产生二义性,使其惟一地标识一个成员,如 c1.A::display( )。在一个类中保留间接共同基类的多份同名成员,这种现象是人们不希望出现的。C++提供虚基类(virtual base class )的方法,使得在继承间接共同基类时只保留一份成员。现在,将类A声明为虚基类,方法如下:class A//声明基类A{…};class B :virtual public... 阅读全文
摘要:
每次遇到vs配置都要让我头疼一段时间,对于某些不太清楚,有时自己试着配置,能运行起来就行,下次又忘了咋陪的了,其中配置的东西真心多。1.输出目录这样配置../../Bin/Server/这个路径是相对于vcproj文件的路径,也就是项目文件的路径2.无法启动程序 E:\.dll配置属性中调试中 "命... 阅读全文
摘要:
本文导读:Mongodb是一种强大,灵活,可扩展的数据存储方式。它扩展了关系型数据库众多有用的功能,如索引,范围查询和排序。 MongoDB的文件存储格式为BSON,同JSON一样支持往其它文档对象和数组中再插入文档对象和数组,同时扩展了JSON的数据类型.与数据库打交道的那些应用。例如,JSON没有日期类型,这会使得处理本来简单的日期问题变得非常繁琐。只有一种数字类型,没法区分浮点数和整数,更不能区分32位和64位数字。也没有办法表示其他常用类型,如正则表达式或函数。 下面是MongoDB的支持的数据类型: 1、 null: null用于表示空值或者不存在的字段。 {"x... 阅读全文
摘要:
1>LINK : fatal error LNK1104: 无法打开文件“..\..\..\Bin\Server\DBCenter.dll”原来是别的程序在使用这个文件,害得我查了半天。 阅读全文
摘要:
1 动态语言和静态语言 通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。 1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。 2 静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C... 阅读全文
摘要:
Defined in headertemplateclassshared_ptr;(since C++11)std::shared_ptris a smart pointer that retains shared ownership of an object through a pointer. Severalshared_ptrobjects may own the same object; the object is destroyed when the last remainingshared_ptrpointing to it is destroyed or reset. The o 阅读全文
摘要:
auto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针)auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。std::auto_ptr pa(new ClassA);下面主要分析一下auto_ptr的几个要注意的地方:1,Transfer of Ownershipauto_ptr与boost库中的share_ptr不同的,auto_ptr没有考虑引用计数,因此一个对象只能由一个auto_ptr所拥有,在给其他auto_ptr赋值的时候,会转移这种拥有 阅读全文
摘要:
Utilities 由短小精干的类和函数构成,执行最一般性的工作。 这些工具包括: general types 一些重要的C函数 numeric limitsPairs C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象 classpair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(key/value)的成对元素。 pair被定义为struct,因此可直接存取pair中的个别值.两个pairs互相比较时, 第一个元素正具有较高的优先级. 例: namespace std{ template bool operator.. 阅读全文
摘要:
调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理堆栈等问题。不同的语言定义了不同的调用约定。 在C++中,为了允许操作符重载和函数重载,C++编译器往往按照某种规则改写每一个入口点的符号名,以便允许同一个名字(具有不同的参数类型或者是不同的作用域)有多个用法,而不会打破现有的基于C的链接器。这项技术通常被称为名称改编(Name Mangling)或者名称修饰(Name Decoration)。许多C++编译器厂商选择了自己的名称修饰方案。 因此,为了使其它语言编写的模块(如 阅读全文
摘要:
示例代码如下:#include int asdf(int a){ printf("%d\n",a); return 0;}int main(){ int (*p)(int); asdf(5); p=asdf; (*p)(5); p(5); printf("asdf is %d,p is %d,*p is %d\n",asdf,p,*p); return 0; }问题,为什么asdf(5),(*p)(5),p(5)三种调用都正确且都能输出正确结果?解答:首先需要明确的一点:函数名不是指针,数组名也不是指针。函数名只是在编程时候代指函数入口地址的符号,函数入 阅读全文