C++略识
文章平均质量分 69
浅语笑笑
这个作者很懒,什么都没留下…
展开
-
<C++略识>之多态和虚函数
1. 什么是多态?** 书本上关于多态的解释:指相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。 ** VincentCZW在《C++中虚函数和多态》中的解释:关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技原创 2016-07-22 23:09:50 · 513 阅读 · 0 评论 -
<C++略识>之三种继承方式
首先,我们应该明确的一点是: 如果有一个类B继承了另一个类A,则当我们实例化类B的对象时,先调用的是父类A的构造函数,然后调用的是子类B的构造函数;而当我们去销毁类B的对象时,先调用的是子类B的析构函数,再调用的是父类A的析构函数。C++中有三种继承方式:公有继承(public)、保护继承(protected)、私有继承(private)1. 公有继承时,基类中的public成员将会被继承到派生类原创 2016-07-21 15:33:40 · 742 阅读 · 0 评论 -
<C++略识>之对象指针与对象成员指针
对象指针声明方法: 堆中: Coordinate *p = new Coordinate(); //对象指针p指向了new运算符实例化的对象 栈上: Coordinate a; //从栈上实例化一个坐标对象a Coordinate *q = &a; //让对象指针指向对象a对象成员是指一个对象是另一个对象的数据成员;而对象成员指针是指对象指针成了另一个对象的数据成员。 比如:class原创 2016-07-21 15:05:09 · 1441 阅读 · 0 评论 -
<C++略识>之友元
C++有了类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,以此提供类与外界的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该类的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和原创 2016-07-31 16:34:23 · 330 阅读 · 0 评论 -
<C++略识>之多重继承、多继承、虚继承
问题:什么是多重继承? 定义三个类:人、士兵、步兵,则有:步兵士兵人,这样的关系称之为多重继承,写法如下:class Person{};classSoldier:publicPerson{};classInfrantryman:publicSoldier{};问题:什么是多继承? 定义三个类:农民、工人、农民工,则有:农民工农民,农民工工人,这样的关系称之为多继承,写法如原创 2016-07-22 22:29:07 · 5869 阅读 · 3 评论 -
<C++略识>之浅拷贝与深拷贝
浅拷贝:又称之为位拷贝,是指当进行对象拷贝时,只是将数据成员的值进行了简单拷贝。 深拷贝:又称之为值拷贝,是指当进行对象拷贝时,不是简单的做值的拷贝,而是将堆中内存的数据也进行了拷贝。浅拷贝和深拷贝两者的区别如下: 深拷贝在创建新的对象时,该对象自己在堆区申请一个内存空间,这样就不会出现在调用析构的时候找不到内存空间;因为如果是浅拷贝的话,所有的指针都指向同一个内存空间,当有一个对象生命周期结束原创 2016-07-20 15:23:42 · 567 阅读 · 0 评论 -
<C++略识>之对象数组与对象成员
1、既可以在栈上实例化对象数组,也可以在堆上实例化对象数组,方法如下:Coordinate coor[3]; //在栈上实例化了一个对象数组,含有3个坐标点对象Coordinate *p = new Coordinate[3]; //在堆上实例化了一个对象数组2、现实中,在对象当中包含其他对象是一种非常常见的现象,即一个对象是另一个对象的数据成员。比如:一条线段是由起点到终点的连线组成,那么,这里原创 2016-07-20 14:55:15 · 373 阅读 · 0 评论 -
<C++略识>之构造函数及初始化列表
初始化类的成员有两种方式:一是在构造函数体内进行赋值操作,二是使用初始化列表。构造函数的特点: - 构造函数在对象实例化时被自动调用; - 构造函数必须与类同名; - 构造函数没有返回值; - 构造函数可以有多个重载形式; - 实例化对象时仅用到一个构造函数; - 当用户没有定义构造函数时,编译器将自动生成一个构造函数。默认构造函数的定义:在实例化对象时,不需要传递参数的构造函数称之为默原创 2016-07-20 14:48:58 · 425 阅读 · 0 评论 -
<C++略识>之重载、覆盖、隐藏
重载(overload):在同一作用域中(同一个类中),或者在顶层函数(与main函数同层)中,如果(1)函数名字相同(2)函数参数列表不同就是函数重载。 注意:如果函数名相同,函数参数列表也相同,但函数返回值不同,这样的函数不能称之为重载。 下面代码中,两个function函数就是重载函数class A{ public: void function(int); v原创 2016-07-26 23:13:41 · 310 阅读 · 0 评论 -
<C++略识>之内联函数
1、内联函数关键字:inline2、内联函数与普通函数在调用方面区别如下:如果使用主调函数去调用一个普通函数,将进行如下5个步骤:(1)调用fun() ->(2)找到fun()的相关函数入口->(3)执行fun()里的相关代码->(4)返回主调函数->(5)主调函数再运行其他代码直到结束如果使用主调函数去调用内联函数时,编译时将函数体代码和实参替代掉函数调用语句,这样其实是原创 2016-07-14 17:09:20 · 352 阅读 · 0 评论 -
<C++略识>之函数重载
1、函数重载定义:在相同作用域内,用同一函数名定义的多个函数,但这些多个函数之间的参数个数或参数类型不同,则称这些多个函数就叫重载函数。2、为什么需要函数重载?试想:如果要实现一个打印函数,既可以打印int型、也可以打印字符串型,如果没有函数重载,我们必须要这样去做:为这个print函数取不同的名字,如print_int、print_string。这里还只是两个函数的情况,如果是很多个的话原创 2016-07-14 17:04:16 · 342 阅读 · 0 评论 -
<C++ 略识> 之引用类型
引用就是变量的别名,引用符号:&。1、基本数据类型的引用int a = 3;int &b = a; //定义了b是a的引用,即b是a的别名注意:引用必须初始化,即:在起别名时,一定要指明给哪个变量起的别名;其次,对别名的修改,就是对实际变量的修改。2、结构体类型的引用typedef struct{ int x; int y;}Coor原创 2016-07-11 18:04:33 · 726 阅读 · 0 评论 -
<C++略识> 之关键字const
1、const修饰的变量必须进行初始化-->一般数据类型const常量初始化const int i = 10; //合法const int j; //非法,导致编译出错-->指针const常量初始化int *p = new int();const int *p =q; //等价于 int const *p = q;-->引用const常量初始化int *p = n原创 2016-07-11 18:12:15 · 624 阅读 · 0 评论 -
<C++略识>之内存分配
C++编译器主要将计算机内存分为以下几个存储区域: 1、代码区:主要存放程序代码,即存储程序逻辑代码的二进制 2、数据区(静态存储区和动态存储区) —–>静态存储区:在编译器进行编译的时候就为该变量分配的内存,存放在这个区的数据在程序全部执行结束后系统自动释放,生命周期贯穿于整个程序执行过程。主要存放的是全局变量和静态变量,另外还有一个比较特别的是有的系统也将字符串常量也存放在静态存储区。原创 2016-07-14 16:58:00 · 516 阅读 · 0 评论 -
C++面试宝典2011版
转自:http://blog.csdn.net/jingxuewang110/article/details/6789557#t951.new、delete、malloc、free关系malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同转载 2016-07-31 23:04:15 · 609 阅读 · 0 评论