自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 C++学习之多态篇(多态的几个特点)

1.虚函数特性可以被继承,当子类中定义的函数与父类中声明的虚函数相同时,(同名同参同返回值),该函数也是虚函数;用父类的指针指向子类的对象时,用该指针调用这个同名函数时,会去调用子类的该函数,这就是多态;2.虚析构函数是为了避免使用父类指针释放子类对象时造成内存泄露;3.在c++中多态的实现是通过虚函数表来实现的;4.每个类只有一份虚函数表,所有该类的对象公用同一张虚函数表;5.两

2016-01-28 17:58:13 1137 4

原创 sizeof与类的大小

1.当类中没有虚函数也没有成员变量的时候,这个类是一个空类,但是sizeof空类对象的大小,并不是为0,而是为1,即默认空类是有一个占位符的。例如:class A{}; sizeof(A) = 1;注意:sizeof是操作符而不是函数,作用是判断数据类型或着表达式长度,字节数的计算在程序的编译时进行,而不是在程序执行的过程中才计算出来。2.当类中只含有静态成员变量,如class A{sta

2016-01-28 17:37:04 966

原创 c++学习之virtual的使用限制

1.不能修饰普通的函数,也就是所修饰的函数必须是某个类的成员函数,不能是全局函数。2.不能修饰静态的成员函数3.不能修饰内联函数4.不能修饰构造函数

2016-01-28 16:41:09 631

原创 C++学习之多态篇(虚函数和虚析构函数的实现原理--虚函数表)

通过下面的代码来说明:#include #include #include using namespace std;/** *  定义动物类:Animal *  成员函数:eat()、move() */class Animal{public:    // 构造函数    Animal(){cout     // 析构函数   vi

2016-01-26 18:13:55 2934 1

原创 C++学习之多态篇(虚析构函数)

动态多态有时候会产生内存泄露,如下图所示的代码:Circle类中有一个从堆中分配的类Coordinate的对象,这个对象必须在Circle的析构函数中销毁,并对堆内存进行回收,如果在main()函数中delete shape,而shape的析构函数没有声明为虚析构函数的话这句代码就只会调用shape类自己的析构函数,而不会调用Circle的析构函数,这样circle类含有的从堆中分配的Coor

2016-01-25 19:25:19 831

原创 C+学习之多态篇(虚函数)

一、什么事多态?多态的定义:相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。二、多态分类:定义不太好理解,其实或字前后说明了两个不同类型的多态形式:即静态多态(早绑定)和动态多态(晚绑定)。1.静态多态(早绑定)看下图中代码:两个calcArea()函数互为重载,互为重载的函数在main()函数中调用的时候会根据参数的不同来调用各自的函数,这种调用关系是很早就确

2016-01-25 19:05:36 638

原创 c++学习之继承篇(多重继承之虚继承)

虚继承 是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型直接或间接派生的其它类。形式:在继承定义中包含了virtual关键字的继承关系,如下图中,类A就叫做虚基类。虚拟继承是多重继承中的菱形继承所特有的概念。虚拟基类是为解决多重继承而出现的。菱形继承中既有多继承,如下图所示:菱形继承中也有多重继承

2016-01-25 12:09:51 3542

原创 C++学习之继承篇(多继承与多重继承)

1.多继承多继承是指一个子类继承多个父类。多继承对父类的个数没有限制,继承方式可以是公共继承、保护继承和私有继承,不写继承方式,默认是private继承多继承举例:#include #include #include using namespace std;/** * 定义工人类: Worker * 数据成员: m_strName * 成

2016-01-21 18:55:41 43020 6

原创 C++学习之继承篇(is a:用子类对象给基类对象赋值或初始化)

1.下面的例子代码,就说明了标题:2.从内存的角度介绍is a:如下图所示:当基类含有两个数据成员m_strName和m_iAge时,不管是公有私有还是保护类型的,都会被子类继承过来,同时子类应该还有他自身的数据成员,m_strCode和m_ISalary,当我们用子类的对象给基类的对象赋值或者初始化基类的对象时,它的本质就是将从父类继承来的数据成员的值赋给父类的对象,而此

2016-01-21 10:10:07 6215 1

原创 C++学习之继承篇一(继承权限)

1.继承权限变化如下面三个表格所示:需要说明的是:(1)B类从A类派生,那么B类将继承A类所有的数据成员,包括私有成员,私有成员只是会继承到不可见得位置,仍然会继承过来。如下图所示:(2)B类从A类派生,那么B类实例化的时候会先调用A类的构造函数再调用B类的构造函数,析构的时候则先调用B的析构函数,再调用A类的析构函数,顺序如下:实例化过程:A() B()

2016-01-19 18:48:14 494

原创 C++学习之继承篇二(隐藏篇)

#include #include #include using namespace std;/** * 定义人类: Person * 数据成员: m_strName * 成员函数: attack() */class Person{public:    Person()    {        cout    }    Per

2016-01-18 19:03:41 603

原创 C++学习之const详解篇

1const类型的数据成员的初始化只能通过初始化列表来初始化,不管类型是基本类型还是自定义的类类型:如下代码所示:1.基本类型常数据成员初始化:2.常对象数据成员:初始化:3常成员函数:正确实现:疑问??常成员函数为什么不能修改数据成员的值呢?原因就是虽然我们看到的changeX()没有参数,但是实

2016-01-15 18:37:42 586

原创 C++学习之对象成员指针篇

所谓对象成员指针就是让一个类的对象的指针作为另外一个类的成员变量,对象成员就是让一个类的对象成为另一个类的成员变量。下面以代码举例说明:公用坐标类:class Coordinate{public:Coordinate(int x,int y);private:int m_iX;int m_iY;}(1)对象成员代码如下:class Line{pu

2016-01-14 18:32:13 1612 2

原创 C++学习之拷贝构造函数篇

一、拷贝构造函数的声明Array(const Array & arr);二、拷贝构造函数的实现分为两种,即是深拷贝和浅拷贝。1.浅拷贝代码如下:class Array{public:Array(){m_iCount = 5;   m_pArr = new int[m_iCount]; }Array(const Array& arr){m_

2016-01-13 17:44:09 937 3

原创 C++学习之对象成员篇

对象成员特点总结:(1)实例化对象A时,如果对象A有对象成员B,那么先执行对象B的构造函数,再执行A的构造函数。(2)如果对象A中有对象成员B,那么销毁对象A时,先执行对象A的析构函数,再执行B的析构函数。(3)如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B。类A和B的关系就好比是汽车和零部件的关系,实例化类A就相当于产生汽车的过程,肯定

2016-01-13 16:21:33 783

原创 C++学习之对象数组篇

#include using namespace std;class Coordinate{    public:Coordinate(){}// 打印坐标的函数void printInfo()  {   cout}public:int m_iX;int m_iY;};int main(void){//定义对象数组

2016-01-13 15:57:37 383

原创 c++学习之构造函数和析构函数篇

1.对象结构:首先了解内存分区,如下图所示:2.对象结构举例说明:下面定义了一个汽车的类,在类被实例化之前是不会占用栈或堆中内存的,当被实例化后,比如实例化了三个对象,car1、car2、car3,这每一个对象都会在栈上开辟内存,来存储各自的数据,但它们各有一份变量,占据不同的内存,而逻辑代码只编译出了一份,放在代码区,当需要的时候代码区中的代码供所有的对象进行使用,谁需要的时候就

2016-01-08 17:29:09 1179 2

原创 system("Pause")你会用吗

在写控制台程序的时候,想让控制台可以不是一闪而过的状态,可以天价system("pause");这句话,但是同时必须包含头文件#include。

2016-01-04 16:18:00 5234

原创 c++静态成员变量的使用

通常使用时,静态成员变量像普通成员变量一样在头文件中声明,比如static int i;但是因为静态成员变量属于类本身,不属于任何一个对象,所以初始化不能在构造函数或初始化成员列表中,只能在cpp的开头,用int A::i=0;(A为类的名称)。总结其所有特性如下:1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 

2016-01-04 11:36:36 3277

空空如也

空空如也

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

TA关注的人

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