
C++
文章平均质量分 77
青莲太初
这个作者很懒,什么都没留下…
展开
-
接口与虚函数的区别
接口只能声明,不能实现,虚函数可以。接口:对外提供可以访问的函数就叫接口,接口不能有实现,只能声明。虚函数不需要强制被重写,其本身也包含实现的部分。抽象类就是指定了派生类必须实现的函数(纯虚函数),不然编译不会过的。虚函数的限制: 1.虚函数仅适用于有继承关系的类对象, 所以只有类的成员函数才能说明为虚函数. 2.静态成员函数不能是虚函数.转载 2012-09-26 16:29:03 · 6099 阅读 · 0 评论 -
VC 的DLL应用(含Demo演示)
作者:一点一滴的Beer Email /Gtalk:dreamzsm@gmail.com 出处:http://www.cnblogs.com/beer/VC++的DLL应用(含Demo演示)作者:一点一滴的Beer http://beer.cnblogs.com/ 在大学大一的时候学的是C,然后后来大二的时候专业又开了C++这个课程,然后再后来自己又自转载 2012-10-06 21:25:25 · 546 阅读 · 0 评论 -
C++成员变量的初始化方式
1.首先把需要初始化的成员变量分为几类:变量(int)静态变量(static int)常量(const int )静态常量(static const int) 2.对应的初始化方式是:一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化静态成员变量必须在类外初始化常量必须在初始化列表里初始化静态常量必须只能在定义转载 2012-09-17 15:04:40 · 1163 阅读 · 0 评论 -
sizeof
(1)#include "stdafx.h"#include using namespace std;class A{public:A(){}A(int a):m_a(a){}virtual void print(){cout}private:int m_a;};class B:public virtual A{转载 2012-09-19 21:23:48 · 493 阅读 · 0 评论 -
union 共用体的使用
union 共用体名{ 数据类型 成员名; 数据类型 成员名; ... } 变量名; 共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所转载 2012-10-14 22:58:57 · 497 阅读 · 0 评论 -
dynamic_cast介绍
dynamic_cast (expression)这个表达式将 expression 转换为一个 type-id 类型的对象。 Type-id 必须是一个指针、指向一个已经定义类的类型或一个指向 VOID 的指针。 Expression 的类型必须是一个指针,如果 type-id 是一个指针;当 type-id 是一个引用的时候必须是一个左值。如果 type-id 是一个到 express转载 2012-09-24 21:18:40 · 382 阅读 · 0 评论 -
标准C++的类型转换符:static_cast, const_cast, dynamic_cast, reinterpret_cast
C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(exdivssion) // cast exdivssion to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这转载 2012-09-25 10:04:18 · 433 阅读 · 0 评论 -
typeid详解
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。 dynam转载 2012-09-25 10:17:07 · 412 阅读 · 0 评论 -
RTTI
RTTI(Run-Time Type Identification,通过运行时类型识别)程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。 RTTI介绍 RTTI提供了以下两个非常有用的操作符: (1)typeid操作符,返回指针和引用所指的实际类型; (2)dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生转载 2012-09-25 16:36:35 · 307 阅读 · 0 评论 -
运算符重载
一、概述1、运算符重载的实质:运算符重载的实质就是函数重载。在实现过程中,首先把指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型来确定需要调用的函数,这个过程是在编译过程中完成的。2、运算符重载的规则:(1)C++中的运算符除了少数几个以外,全部可以重载,而且只能重载已有的运算符,不允许用户自己定义新的运算符。(2)重载之后运算符转载 2012-09-25 22:04:30 · 814 阅读 · 0 评论 -
怎么理解C++编译、连接、运行
编译是将各个模块转化为机器语言的对象文件连接就是把这些对象文件再组合,将模块与模块之间的入口与出口衔接起来例如你自己写个单文件程序,你自己的程序是一个模块然后你在头文件里面调用的东西又是几个模块各个模块之间被调用的函数称为符号编译的时候引用其他模块的地方用符号标注,但是不指向实际地址连接的时候将模块进行组合,求得各个符号的偏移地质,再按照符号列表填入各个模块实现实际调用,这转载 2012-09-25 22:13:38 · 551 阅读 · 0 评论 -
vs2010中动态链接库的编写和调用
vs2010中动态链接库的编写和调用一,编写动态链接库创建一个win32控制台应用程序,选择dll类型。在生成的空文件中输入如下代码:extern "C" _declspec(dllexport) int add(int i,int j){return i+j;}编译即可生成dll,lib(输入符号文件,非静态库的意思)文件二,新建一个win32控制台工程t转载 2012-10-06 21:28:26 · 966 阅读 · 0 评论 -
c++(重载、覆盖、隐藏) (2)
“overload”翻译过来就是:超载,过载,重载,超出标准负荷;“override”翻译过来是:重置,覆盖,使原来的失去效果。 先来说说重载(Overload)的含义,在日常生活中我们经常要清洗一些东西,比如洗车、洗衣服。尽管我们说话的时候并没有明确地说用洗车的方式来洗车,或者用洗衣服 的方式来洗一件衣服,但是谁也不会用洗衣服的方式来洗一辆车,否则等洗完时车早就散架了。我们并不要那么明确地转载 2012-09-16 19:06:41 · 457 阅读 · 0 评论 -
const成员函数
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书转载 2012-09-27 16:22:42 · 455 阅读 · 0 评论 -
c++(重载、覆盖、隐藏) (1)
成员函数的重载、覆盖与隐藏成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。8.2.1 重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与转载 2012-09-16 18:25:01 · 465 阅读 · 0 评论 -
c++(重载、覆盖、隐藏) (3)
函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)2、当我们调用一个重载的函数时,又是如何去解析的?(即怎么知道调用的是哪个转载 2012-09-16 19:15:04 · 798 阅读 · 0 评论 -
c++(重载、覆盖、隐藏) (4)
“overload”翻译过来就是:超载,过载,重载,超出标准负荷;“override”翻译过来是:重置,覆盖,使原来的失去效果。 先来说说重载(Overload)的含义,在日常生活中我们经常要清洗一些东西,比如洗车、洗衣服。尽管我们说话的时候并没有明确地说用洗车的方式来洗车,或者用洗衣服 的方式来洗一件衣服,但是谁也不会用洗衣服的方式来洗一辆车,否则等洗完时车早就散架了。我们并不要那么明确地转载 2012-09-16 19:15:54 · 290 阅读 · 0 评论 -
C++基础:动态链接库调用方法总结
动态链接库的动态调用(也叫显式调用)我是可以运用了,但是静态调用(也叫隐式调用)我其实还是没有掌握,这次就借这个机会把动态库的两种用法再熟悉一下。(一)先回顾一下,动态链接库和静态链接库 静态链接库:lib中的函数不仅被连接,全部实现都被直接包含在最终生成的EXE文件中,只是实现是不可见的。动态链接库:dll不必被包含在最终的EXE中,静态调用时仅把函数名或者变量名或者类名链接到E转载 2012-10-06 21:19:57 · 1051 阅读 · 0 评论 -
虚函数与纯虚函数的区别
虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以 不写基类中的函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数 引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public: virtual void Eat(){……};转载 2012-10-07 16:28:28 · 436 阅读 · 0 评论 -
私有构造函数 私有析构函数
很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么? 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私转载 2012-10-07 16:51:17 · 1397 阅读 · 0 评论 -
拷贝构造函数 使用场合
1.拷贝构造函数一般用在以下三种场合: ①. 函数的参数是一个对象,并且是值传递方式 ②. 函数的返回值是一个对象,并且是值传递方式 ③. 用一个对象初始化另外一个对象。当函数的参数或者返回值为一个对象时,使用的时候要小心,因为值传递的时候执行的是位拷贝,并不会调用对象的构造函数,也就是说生成的临时对象可能不是正确初始化的,这样就可能会出现一些意向不到的问题。当返回转载 2012-09-17 08:59:39 · 1372 阅读 · 0 评论 -
c++类中成员变量的初始化
1、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。class CA{public:int data;public:CA();};CA::CA():data(0)//……#1……初始化列表方式{//data = 0;//……#1……赋值方式};2、static 静态变量:static转载 2012-09-15 21:59:48 · 633 阅读 · 0 评论 -
C/C++ 各种计时函数总结
本文对Windows平台下常用的计时函数进行总结,包括精度为秒、毫秒、微秒三种精度的5种方法。分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及clock()不仅可以用在Windows系统,也可以用于Linux系统。在Windows系统下三种,使用Windows提供的API接口timeGetTime()、GetTickCount()及QueryPerf转载 2013-06-03 08:27:42 · 949 阅读 · 1 评论