C/C++
文章平均质量分 73
qeshining
这个作者很懒,什么都没留下…
展开
-
C++静态库与动态库
C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非转载 2015-05-09 15:37:22 · 242 阅读 · 0 评论 -
c++之const
数据的封装实现了数据的隐藏,让数据更安全,但是前面讲到的通过局部变量、全局变量、类的数据成员、类的静态成员及友元实现了数据的共享,这样又降低了数据的安全性。有些数据是需要共享而又不能被改变的,那么这时候我们就要将其声明为常量。 就像前面讲到的简单数据类型的符号常量,我们也可以用const声明对象,叫做常对象。鸡啄米这一讲就给大家讲讲常引用、常对象和对象的常指针,另外还有常数组和转载 2016-02-04 14:19:33 · 291 阅读 · 0 评论 -
c/c++内存分区
目录(?)[-]导读总结参考文献导读正确的理解C/C++程序的内存分区,是合格程序猿的基本要求。 网络上流形两大版本内存分区,分别为:1. 五大内存分区:堆、栈、全局/静态存储区、自由存储区和常量存储区。 2. 五大内存分区:堆、栈、全局/静态存储区、字符串常量区和代码区。且不论以上两种分区孰是孰非,孰优孰劣,我认为具体的内存分区和编译器有很转载 2016-02-04 14:18:28 · 303 阅读 · 0 评论 -
libtool
o: 编译的目标文件a: 静态库,其实就是把若干o文件打了个包so: 动态链接库(共享库)lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息 1 libtool的工作原理 libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的转载 2016-01-13 14:20:16 · 537 阅读 · 0 评论 -
g++编译
GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名1。gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译2。gcc的基本用法gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o转载 2016-01-13 10:37:45 · 331 阅读 · 0 评论 -
用到boost时间,编译报错
boost::gregorian::date myDate ( boost::gregorian::day_clock::local_day());std::string today = boost::gregorian::to_iso_string(myDate);第一句,date前要加命名空间;第二句,报错:/tmp/ccaSDZPD.o: In function `boo原创 2015-11-06 15:43:59 · 1433 阅读 · 0 评论 -
C++标准转换运算符reinterpret_cast
reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。什么是无关类型?我没有弄清楚,没有找到好的文档来说明类型之间到底都有些什么关系(除了类的继承以外)。后半句倒是看出了reinterpret_cast的字面意思:重新解释(类型的比特位)。我们真的可以随意将一个类型值的比特位交给另一个类型作为转载 2015-11-06 10:39:32 · 518 阅读 · 0 评论 -
静态类型和动态类型检查
1、静态类型和动态类型如果大家希望学好C++的话那请务必多学习一下c++内部的对象模型,前面有很多博客都是关于这方面的不过都不是自己写的(因为自己很懒)。举个例子:类A,类B,如果B没有继承A那这就没什么关系了,不过我这里主要说的就是说它们有关系,所以我这里就假如B继承了A。那B将继承A的某些特性(比如成员函数,成员变量等等)。那假如没有什么虚函数什么的,那这种关系如下:转载 2015-11-06 10:38:17 · 3820 阅读 · 0 评论 -
g++报错boost问题之generic_category()
main.cpp:(.text+0x49): undefined reference to `boost::system::generic_category()'main.cpp:(.text+0x53): undefined reference to `boost::system::generic_category()'main.cpp:(.text+0x5d): undefined r转载 2015-08-19 09:25:08 · 591 阅读 · 0 评论 -
虚函数与虚继承
封装、继承、多态是面向对象语言的三大特性,熟悉C++的人对此应该不会有太多异议。C语言提供的struct,顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继承机制解决了对象复用的问题,然而多重继承又会产生成员冲突的问题,虚继承在我看来更像是一种“不得已”的解决方案。多态让对象具有了运行时特性,并且它是软件设计复用的本质,虚函数的出现为多态性转载 2015-08-30 16:06:53 · 274 阅读 · 0 评论 -
gtest使用方法
(0)gtest是什么gtest是一个跨平台的C++测试框架,google作品。它支持自动发现测试,断言集,用户定义的断言,death测试,致命与非致命的失败,类型参数化测试,各类运行测试的选项和XML的测试报告。(1)下载gtest地址:http://code.google.com/p/googletest/downloads/list笔者下载的版本是1.6.0h转载 2015-08-11 18:34:46 · 971 阅读 · 0 评论 -
C中string打印
代码:std::string s="aaa";printf("%s\n",s);编译报错:error: cannot pass objects of non-trivially-copyable type ‘std::string {aka class std::basic_string}’ through ‘...’修改:printf("%s\n",s原创 2015-05-07 13:30:18 · 1344 阅读 · 0 评论 -
C++中的mutable和volatile
mutable和volatile 很少遇到这两个关键字,学嵌入式估计知道后者,深入研究C++的估计知道前者。 (1)mutable 在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修转载 2016-03-10 16:43:45 · 267 阅读 · 0 评论