C++基础
qq_34488499
linux学习
展开
-
C++中extern关键字使用
chapter 1 . extern关键字的作用 extern是一个关键字,它告诉编译器存在着一个变量或者一个函数,如果在当前编译语句的前面中没有找到相应的变量或者函数,也会在当前文件的后面或者其它文件中定义,来看下面的例子。 [cpp] view plain copy// extern.cpp : Defines the转载 2016-03-30 22:41:26 · 273 阅读 · 1 评论 -
C++虚基类的实现机制:笔记
在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件:(1)、obj 是一个虚拟继承的派生类的对象(2)、mem是从虚拟基类派生下来的成转载 2016-05-19 23:05:47 · 342 阅读 · 0 评论 -
C++虚基类的作用
虚基类的作用 当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如:class CBase { };class CDerive1:virtual public CBase{ };class CDerive2:virtual public CBase{ };class CDerive12:public CDerive1转载 2016-05-19 22:04:44 · 284 阅读 · 0 评论 -
编译生成静态库文件
Lunix下编译静态库文件:.o后缀文件:编译生成的中间代码文件;.a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大;.so后缀文件:动态库文件,只是一个指向,不会合到可执行程序中,当要调用函数库的时候才使用; 用一个简单的例子阐述下在lunix环境下生成静态库文件的过程:一. 源码文件:so_test.h:void test_a();voi转载 2016-05-16 21:54:18 · 799 阅读 · 0 评论 -
编译生成动态库文件(方式二)
Lunix下生成动态库文件: 之前已经介绍了依靠makefile文件实现可执行文件,下面说下在源文件中指定加载的动态库文件; 一. 源码文件:datetime.h: #ifndef __DATETIME_H #define __DATETIME_H /* 日期结构 */ typedef struc转载 2016-05-16 21:52:28 · 352 阅读 · 0 评论 -
编译生成动态库文件
Lunix下生成动态库文件: 之前已经介绍了.o,.a,.so文件类型的含义,.so后缀的文件是动态库文件。 下面介绍在编译过程中链接到动态库文件的方法:一. 源码文件:so_test.h:void test_a();void test_b();void test_c(); test_a.c:转载 2016-05-16 21:46:15 · 520 阅读 · 0 评论 -
vector容器与iterator迭代器
vector容器vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::vector;vector是一个类模板(class t转载 2016-05-05 07:51:44 · 420 阅读 · 0 评论 -
C++模板
模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。 使用模板的目的就是能够让程序员编写与类型无关的代码转载 2016-05-04 21:29:33 · 159 阅读 · 0 评论 -
String 相关的一些内容
因为某些历史的原因,也为了与C兼容,所以C++语言中的字符串字面值并不是标准库类型string的对象,切记,字符串字面值与string是不同类型。处理string中的字符可以使用其中的cctype头文件中的定义的函数。原创 2016-04-11 07:14:23 · 264 阅读 · 0 评论 -
C++分离式编译模式
1.分离编译模式的定义编辑一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件连接起来形成单一的可执行文件的过程。[1] 2.分离编译模式的由来编辑分离编译模式是C/C++组织源代码和生成可执行文件的方式。在实际开发大型项目的时候,不可能把所有的源程序都放在一个头文件中,而是分别由不同的程序员开发不同的模块,再将这转载 2016-04-25 21:14:48 · 775 阅读 · 0 评论 -
C++ try catch 用法
一、简单的例子首先通过一个简单的例子来熟悉C++ 的 try/catch/throw:1 #include //包含头文件2 #include3 double fuc(double x, double y) //定义函数4 {5转载 2016-04-25 20:48:36 · 10139 阅读 · 0 评论 -
变量定义域以及嵌套的作用域
#include using namespace std; int main(){ int i=10;{i++;int yy=0;}cout return 0; } 如上程序会出现yy未定义的错误,C++中变量的作用域以大括号相隔。#include using namespace std; int i=10;i原创 2016-03-31 22:54:17 · 539 阅读 · 0 评论 -
采用dlopen、dlsym、dlclose加载动态链接库【总结】
1、前言 为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续补充。如何将程序设计为插件形式,挖掘出主题和业务之间的关系,需要进一转载 2016-07-07 21:30:49 · 303 阅读 · 0 评论