c++
文章平均质量分 81
终结大笨狗
这个作者很懒,什么都没留下…
展开
-
c++生成DLL文件之动态导出方式
c++生成DLL文件之def导出方式一、创建DLL1.生成DLL文件,导出函数,一般有两种方法,一种是在函数声明前面加上__declspec(dllexport),另一种是用def文件来动态导出函数。这篇写一个用def导出函数的小demo。2.创建makedll文件。(1).makedll.h #define MATHFUNCSDLL_EXPORTS #ifdef MATHFUNCS转载 2018-01-12 17:56:38 · 3912 阅读 · 0 评论 -
局部变量、全局变量、类数据变量
在结构化程序设计中,有人提出“数据结构+算法=程序设计”,数据结构就是数据的组织,算法是用函数实现的,可见数据和函数很早就被看作程序设计的重点了。面向对象程序设计中,这种观点应稍作一下修改:“数据结构+算法=对象”。就是数据和函数构成了类的对象。面向对象程序设计中,数据用来描述对象的属性,函数是行为,用来处理数据。将数据和函数封装到一个类里,类中的函数成员可以访问数据成员,函数成员之间可以实现...转载 2018-04-20 16:25:24 · 764 阅读 · 0 评论 -
函数、内联函数、类函数
函数的运行原理函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能和使用方法,而不必关心函数功能的具体实现;函数的引入可以减少程序的目标代码,实现程序代码和数据的共享。但是,函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后原创 2018-04-20 15:52:47 · 445 阅读 · 0 评论 -
static关键字总结
static关键字总结 static,即静态声明。它在 作用域、存储方式、生命周期 等各方面影响一个变量或函数。文章将从 局部变量、全局变量、普通函数、类的static成员(包括数据成员与成员函数)来总结static。全局变量 所有的全局变量,无论是否是static的,都是存储于静态存...转载 2018-04-19 15:55:47 · 216 阅读 · 0 评论 -
头文件、源文件 及extern的使用
头文件与源文件的作用1. 编译器的工作过程简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成...原创 2018-04-19 14:13:42 · 1540 阅读 · 0 评论 -
c++ extern 关键字的使用
1. 序言extern是一个关键字,它告诉编译器程序中存在着一个变量或者一个函数,如果在当前编译语句的前面中没有找到相应的变量或者函数,也会在当前文件的后面或者其它文件中定义。因此,extern的功能主要为声明外部有一个可用的函数或者变量(通常,这些变量时在cpp或者c文件中定义的),而且这些变量和函数是全局可见的。2. 现代程序编译流程简要介绍在具体讲述extern之前,觉得十分有必要介绍下现代程转载 2018-04-19 10:04:04 · 296 阅读 · 0 评论 -
c++多态详解
C++ 多态详解多态现在一般的用法,就是拿一个父类的指针去调用子类中被重写的方法。但我搞不懂为什么要那么做,我们直接在子类中写一个同名的成员函数,从而隐藏父类的函数不就行了么?将父类比喻为电脑的外设接口,子类比喻为外设,现在我有移动硬盘、U盘以及MP3,它们3个都是可以作为存储但是也各不相同。如果我在写驱动的时候,我用个父类表示外设接口,然后在子类中重写父类那个读取设备的虚函数,那这样电脑的...转载 2018-01-26 21:54:49 · 218 阅读 · 0 评论 -
string、int、doiuble相互转换
C++中将string类型转换为int, float, double类型 主要通过以下几种方式:# 方法一: 使用stringstreamstringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型。Demo:#include <iostream> #include <sstream> //使用strin转载 2018-01-10 11:37:09 · 401 阅读 · 0 评论 -
把大端、小端与堆、栈的生长方向联系起来记忆
把大端、小端与堆、栈的生长方向联系起来记忆 对于大端、小端的区别,可能看资料的时候确实理解了,但过段时间就搞混了;高位低地址、低位高地址、高位高地址、低位低地址…是不是看起来就好头大,哪个对应哪个啊。其实可以把大小端与堆栈联系起来记忆,虽然两者讲的不是一个粒度的,但大小端模式里高低位的存放与堆和栈的生长方向有一个共同点转载 2018-01-25 09:02:02 · 408 阅读 · 0 评论 -
c++初始化列表的详解2
C++构造函数初始化列表与赋值 C++类中成员变量的初始化有两种方式: 构造函数初始化列表和构造函数体内赋值。下面看看两种方式有何不同。 成员变量初始化的顺序是按照在那种定义的顺序。1 内部数据类型(char,int……指针等)class Animal{public: Anim转载 2018-01-17 10:21:40 · 141 阅读 · 0 评论 -
c++初始化列表详解
C++ 初始化列表 何谓初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。struct foo{ str转载 2018-01-17 09:39:11 · 354 阅读 · 0 评论 -
类初始化列表简介
类的构造函数:类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。类的定义如下:class Line{ public: void setLength( double len ); double原创 2018-01-17 09:33:01 · 501 阅读 · 0 评论 -
深入理解C++三大特性之一 ——多态
深入理解C++三大特性之一 ——多态1.多态的实现效果 多态:同样的语句调用能呈现不一样的表现形态; 2.多态实现的三个条件 a)继承 b)virtual关键字修饰 c)父类指针指向或引用子类对象 3.多态的C++实现 通过virtual关键字,告诉C++编译器对这个函数要支持多态; 不要在编译期间根据指针类型判断如何调用;而是要根据运行期间指针转载 2018-01-24 14:26:05 · 221 阅读 · 0 评论 -
C++ 多态的实现及原理
C++ 多态的实现及原理 C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。转载 2018-01-24 13:55:28 · 247 阅读 · 0 评论 -
c++接口的实现
C++ 接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 “= 0” 来指定的,如下所示:class Box{ public: // 纯虚函数 v转载 2018-01-16 10:54:46 · 1929 阅读 · 0 评论 -
c++头文件的工作原理
一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是相对独立的转载 2017-12-29 09:41:41 · 671 阅读 · 0 评论 -
c++ 中的 namespace 用法
多人代码的整合,namespace 还是非常有用的。可以很轻松的避免变量与函数一样的命名 1. namespace 在 单个头文件 中使用 下面给一个简单示例演示命名空间和自定义头文件的使用,代码如下: compare.h:namespace compare{ double max(const double* data,int size); double min(const原创 2017-12-28 14:44:21 · 23351 阅读 · 3 评论 -
c++生成DLL文件之静态导出方式
关于创建动态链接库文件,并在程序运行过程中连接调用,我是这么理解的;这篇文章基本是属于入门文档。。。首先要生成一个DLL文件和lib文件,才能够供给其他程序动态调用或者静态调用。这篇日志是关于动态调用的;接下来是总结的一些具体步骤:1.新建项目,win32,win32项目,输入项目名称,例如:MakeDll。2.确定,下一步:3.菜单栏选择项目——添加新项,来创建头文件MakeDll.转载 2018-01-12 18:59:27 · 1250 阅读 · 0 评论 -
彻底搞清C++中的重载、重定义、重写
1、重载首先说重载,它最简单,C++中的重载和java中的差不多,都是在一个类中,方法名相同而参数不同的几个方法,但是不能靠返回类型来判断。例如:class AA{public: void print() { cout << "父类" << endl; } void print(int x ) { cout << "父类:"转载 2018-04-28 21:46:47 · 172 阅读 · 0 评论