C/C++
chen_shiyang
我是菜鸟
展开
-
C++ 虚函数解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法转载 2012-09-26 17:31:27 · 329 阅读 · 0 评论 -
c++构造函数详解
1. 构造函数不能为虚函数的理由 (1.)存储空间角度一个虚函数对应一个虚函数表(vtable),可是这个vtable是存储在对象的内存空间中。如果构造函数是虚的旧需要通过vtable来调用,可是对象还没事例化,哪来的内存空间,怎么找vtable.所以构造函数不能是虚函数。 (2.)使用角度虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是初始化实例,使用虚函数转载 2012-10-25 15:51:41 · 708 阅读 · 0 评论 -
C++ 抽象类
拿前面交通工具类的程序进行思考,由交通工具派生出来的汽车类,飞机类,是具备更具体特性的描述的类,而对于交通工具这一个基类来说,它的特性是模糊的,广泛的,如果建立一个交通工具类的对象并没有实际意义,为了对这种没有必要能够建立对象的类进行约束,c++引入了抽象类的特性,抽象类的约束控制来源于纯虚函数的定义。 声明一个类的成员函数为纯虚函数的意义在于让c++知道该函数并无意义,它的作用只转载 2013-05-09 14:24:05 · 988 阅读 · 0 评论 -
重载与重写
C++ 重载与重写 重写(覆盖)是指派生类函数覆盖某基类函数: 1.不同的范围,分别位于基类和派生类中 2.函数名相同 3.参数相同 4.基类函数必须有virtual关键字 函数重载: 1.同一个类中 2.函数名相同 3.参数相同 4.virtual 关键字可有可无 重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数: 1.如果派生类的函数和基类的函原创 2013-01-22 10:54:51 · 297 阅读 · 0 评论 -
动态内存传递
当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道.这些往往会使人受尽折磨.所以如果你想深入C/C++编程,你必须静下心来,好好苦一番. 现在我们将讨论C/C++里我认为哪一本书都没有完全说清楚,也是涉及概念细节最多,语言中最难的技术之一的动态内存的传递.并且在软件开发中很多专业人员并不能写出相关的合格的代码. 【引入】 看下面的例子,这是我们在编写库函数或者项目内的共同函转载 2012-12-04 18:34:02 · 281 阅读 · 0 评论 -
库函数strcpy的工作方式
strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中,其操作对象是字符串,完成从源字符串到目的字符串的拷贝。。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。转载 2012-10-25 15:00:15 · 3174 阅读 · 1 评论 -
C语言连接Mysql
C语言连MySQL使用教程 系统环境: Ubuntu8.04 一:安装 从官方网站下载 需要的软件有: MySQL-server ,MySQL-client,MySQL-bench,MySQL-devel,MySQL-shared 其实上面的几个文件,最需要的是MySQL-server ,MySQL-client,我下载的是 还有mysql-connector-c-6.0.转载 2012-09-24 18:00:11 · 684 阅读 · 0 评论 -
C操作MYSQL
下来的时候赶紧找资料,刚才搜索了几下,终于找到一些: 1,[比较详细]在 C 里嵌入 SQL:http://www.pgsqldb.org/pgsqldoc-7.4/ecpg.html 2,[在MySQL数据库中使用C执行SQL语句]:http://www.dvbbs.net/tech/data/2006031818989.asp 3,MySQL客户工具和API:http://www.yes转载 2012-09-24 17:55:04 · 573 阅读 · 0 评论 -
linux 汇编语言
一、简介 作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地转载 2012-09-24 16:55:09 · 720 阅读 · 0 评论 -
C++ 虚函数 多态
1、什么是虚函数和多态 虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。 举个例子说明虚函数、多态、早绑定和晚绑定转载 2012-09-24 16:27:01 · 336 阅读 · 0 评论 -
虚函数和纯虚函数的区别
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 1、简介 假设我们有下面的类层次: [cpp] view plaincopy class转载 2012-09-29 14:18:06 · 436 阅读 · 0 评论 -
娱乐,C语言模拟C++虚函数多态性
看有感,原来C语言可以这样玩。。仔细想想,C++不也是在汇编层面上的封装么。膜拜这些语言设计者,深谙计算机科学的精髓,真是长见识了。 本文只是简单模拟下多态,大体上就是C++的虚函数表机制,并没有考虑类域与继承机制,真要讨论起来那就麻烦多了,推荐大家可以看看PY源码解析,里面有简单介绍。 我拿传统的圆与正方形问题为例子,基类是Shape,每个类定义虚函数showShape(),从而体现多态。转载 2012-09-29 10:34:37 · 1035 阅读 · 0 评论 -
不能为virtual 的函数
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。 1、为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。 2、为什么C++不支持构造函数为虚函数? 这个原因很简单,主要是从语义上考虑,所以不支持。因为构造函转载 2013-05-09 17:08:20 · 465 阅读 · 0 评论