自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (1)
  • 收藏
  • 关注

转载 多重继承

首先我们考虑一个(非虚拟)多重继承的相对简单的例子。看看下面的C++类层次结构。class Top { public: int a; }; class Left : public Top { public: int b; }; class Right : public Top { public: int c; }; class Bottom : public Left, pu

2017-04-22 21:45:41 209

原创 C++has-a关系

一、包含关系 简单地说就是“对象中的对象”,一个类中包含是一个类成员。class Student{ private: string name; //一个string类对象 valarray<double> scores; //一个valarray<double>类对象 ...};在包含关系中通过对象名来调用被包含类对象的公

2017-04-22 21:32:16 976

原创 抽象基类

一、简介 C++通过使用纯虚函数(pure virtual function,ABC)提供为实现的函数。纯虚函数声明的结尾处为=0。 当类声明中含有纯虚函数时,则不能创建该类的对象。包含纯虚函数的类只用作基类。要成为真正的ABC,必须至少包含一个纯虚函数。二、C++为什么要定义抽象基类? 纯虚函数只提供了接口,并没有具体实现。抽象类不能被实例化,通常是作为基

2017-04-21 11:23:08 463

原创 虚函数表和虚函数表指针

编译器处理虚函数的方法是:给每个对象添加一个隐藏成员。隐藏的成员保存了一个指向地址数组的指针。这个数组被称为虚函数表(virtual function table,vtbl)。虚函数表中存储了为对象进行声明的虚函数的地址。 而虚函数表指针就是每个对象隐藏的成员,这个成员就是一个指针,指向虚函数表的开头。#includeusing namespace std;#pragma p

2017-04-20 15:02:45 648

原创 静态联编与动态联编

将源代码中的函数调用解释为执行特定的函数代码块被称为函数名联编(binding)。 静态联编(static binding):在编译过程中进行联编。 动态联编(dynamic binding):使用虚函数,编译器在运行时选择正确的虚方法的代码。一、指针和引用类型的兼容性 指向基类的引用或指针可以引用派生类对象,而不必进行显示的转换。例如: A是一个基类,B是A

2017-04-20 11:48:21 311

原创 C++类的虚成员函数

一、简介 虚函数就是类的成员函数前面加上virtual关键字的函数。虚函数的作用就是为了实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。使用了virtual程序将根据引用或指针指向的类型来选择方法,如果没有使用virtual程序将根据指针类型或引用类型来选择方法。二、虚函数简单演示 在多态

2017-04-19 21:12:12 4209

原创 C++类成员函数存储方式

*类的成员函数是不占类空间的。 当我们实例化一个对象的时候,因为这个对象是用类定义的,那么它理所当然拥有了这个类的数据和函数。但是,一般情况下,不同的对象,他们的的数据值不同,但是函数的代码都相同。所以,为了节约存储空间(想象一下我们如果定义了100个对象,那么用100段内存空间存储相同的代码,岂不是很浪费?),我们让成员函数的代码共享。所以类的成员函数,对于类来讲。一方面是逻辑上的“属于”,一方

2017-04-18 22:42:26 946

原创 C++默认参数

一、默认参数严格按照从左向右的顺序,不可跳跃。 void Fun(int a , int b = 2, int c) //这样是错误的,如果从某处开始使用默认值,则右边所有其他参数也必须有默认值二、参数默认值只能在含糊声明或函数定义时一处指出,不可同时指定。三、默认参数与函数重载的二义性问题. 假如有函数 void Fun(int one, int two = 2);

2017-04-18 22:22:02 1835

原创 new、delete和new[]、delete[]

一、简介 new和delete是C++的关键字,不是函数。而且,malloc 申请完空间之后不会对内存进行必要的初始化,而 new 可以。这两个其实是 C++ 语言标准库的库函数,原型分别如下:void *operator new(size_t); //allocate an objectvoid *operator delete(void *); //free an object

2017-04-18 21:26:56 495

转载 浅谈命名空间

一、使用命名空间的目的 为了在同一个作用域中有两个或多个同名的实体,为了解决命名冲突 ,C++中引入了命名空间,所谓命名空间就是一个可以由用户自己定义的作用域,在不同的作用域中可以定义相同名字的变量,互不干扰,系统能够区分它们。二、什么是命名空间 每个名字空间都是一个名字空间域,存放在名字空间域中的全局实体只在本空间域内有效。名字空间对全局实体加以域的限制,从而合

2017-04-18 21:15:00 392

智能寻迹小车

个人第一个作品,简单易懂!

2016-09-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除