C/CPP
文章平均质量分 58
eric_arrow
这个作者很懒,什么都没留下…
展开
-
C++编程路径
1. 头文件的include的相对路径是相对于这个文件。 2. 而fopen是相对于工程路径。 3. 面向对象的三个基本特征:封装、继承、多态。 ------------------------------------------------------------------xilinx ipcore的相对路径(例如rom的初始化文件)是相对于xco文件。原创 2013-05-03 10:35:05 · 529 阅读 · 0 评论 -
C++之多态与虚函数
面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为。在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体。也可以这样说就是实现了“一个接口,多种方法”。 从实现的角度来讲,多态可以分为两类:编译时的多态性和运行时的多态性。前者是通过静态联编来实现的,比如C++中通过函数的重载和运算符的重载。后者则是通过动态联编来实现的,在C++转载 2014-02-12 14:50:49 · 559 阅读 · 0 评论 -
关于继承的构造,函数的调用
1. 构造函数和析构函数class Derive : public Base{pulic: Derive(); ~Derive();private: int d; Member m;}; 构造Derive的时候,按照这个顺序:基类、成员类、派生类。销毁则相反。 2. 继承的函数调用公共财产的继承,编译器会先在Deri原创 2013-06-17 11:18:04 · 687 阅读 · 0 评论 -
vitual析构函数的作用
大家知道,析构函数是为了在对象不被使用之后释放它的资源,虚函数是为了实现多态。那么把析构函数声明为vitual有什么作用呢?请看下面的代码:1 #include 2 using namespace std;34 class Base5 {6 public:7 Base() {}; //Base的构造函数8 ~Base() //Base的析构函数9 {10 c转载 2014-01-03 15:03:19 · 914 阅读 · 0 评论 -
关于继承,函数的继承
1. 子类拥有了父类的public财产,通过子类调用函数时,编译器先在子类中找相应的函数,找不到的话再去父类找。 如此一来,如果父类和子类定义了一样的函数(包括参数列表),子类的函数会覆盖父类函数。 如果,父类定义了子类的同名函数,但是参数列表不同,子类的也会被覆盖隐藏,如原创 2013-06-17 14:19:28 · 5805 阅读 · 0 评论 -
跨目录makefile
VPATH = subCXXFLAGS = -I sub/## 利用makefile的默认规则。 AAA.o肯定依赖于AAA.cc。而且会自动执行g++ -c AAA.cmain: main.o sub.o adder.o g++ -o ......main.o:adder.h sub,hadder.o: adder.hsub.o: sub.h clea原创 2013-08-19 11:48:11 · 911 阅读 · 0 评论 -
一个solution下放两个工程,以及main 的问题
1. 1个solution下放两个工程,1个是静态库,一个是console。那么要把console设置成start up project。右键点击console的工程名,选择Set as StartUp Project 2. main函数如果放在某个namespace里面,就需要前面加 extern “C”如果不在namespace里面的话默认会加,不用自己加。原创 2013-07-28 13:24:37 · 866 阅读 · 0 评论 -
C++中的空类,默认产生哪些类成员函数
1:默认构造函数2:默认拷贝构造函数3:默认赋值操作符4:默认虚构函数5:取值操作符.如class A{ A(); A(const A &lhs); A& operator=(const A &lhs); ~A(); A* opeator&();}sizeof(A) = 1转载 2013-07-04 23:10:56 · 544 阅读 · 0 评论 -
虚函数表解析
C++虚函数表解析 博客分类:C++ C++虚函数表C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做转载 2013-06-25 10:37:49 · 503 阅读 · 0 评论 -
memset,memcpy和strcpy的比较
memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为''或'\0'。函数原型:void *memset(void *s, int c, size_t n);例如:Cpp代码 char a[100];memset(a, '\0', sizeof(a));char a[100];memset(a, '转载 2013-06-25 09:36:27 · 711 阅读 · 0 评论 -
浅拷贝 vs 深拷贝
总结:类含有动态生成的数据成员,必须自定义析构函数以释放动态分配的内存。要么别定义复制构造函数和赋值操作符,如果要定义复制构造函数和赋值操作符,必须定义成深拷贝。自定义复制构造函数(Copy Structor)和复制赋值操作符(Copy Assignment Operator)实现深复制。 对象的构造,也可以由复制构造函数完成,即用一个对象的内容去初始化另一个对象的内容。此时转载 2013-06-24 11:02:37 · 496 阅读 · 0 评论 -
默认构造函数
有些C++类图书在介绍构造函数的时候会提及,当没有定义构造函数的时,编译器会提供默认的构造函数,这个函数什么事情都不做,其内容类似于"{}"的形式,但是实际情况是,编译器不会在任何情况下都提供默认的构造函数.在许多情况下,编译器并没有提供的默认构造函数,而是经过O2选项优化编译后,某些结构简单的类会被转换为几个连续定义的变量,前面的学习过程中 我们,我们也碰到了在类对象定义过程中没有触发构转载 2013-07-08 11:00:49 · 591 阅读 · 0 评论 -
#include的问题
#include 用双引号,相对路径从这个源文件算起。此时如果用尖括号,会报错。如果设置了额外的 include 文件路径,则双引号和尖括号都可以。原创 2013-06-07 15:19:11 · 670 阅读 · 0 评论 -
系统栈、用户栈以及栈的内部实现
系统栈(也叫核心栈、内核栈)是内存中属于操作系统空间的一块区域,其主要用途为:(1)保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出;(2)保存操作系统子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。用户栈是用户进程空间中的一块区域,用于保存用户进程的子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。那么为转载 2013-06-13 15:12:56 · 762 阅读 · 0 评论 -
rep stos 指令(Intel汇编)
今天读代码时,忽然跳出如下一条指令==>>汇编代码: rep stos dword ptr es:[edi]在网上查了相关资料显示:/************************************************************/lea edi,[ebp-0C0h] mov ecx,30h mov eax,0CCCCCCCCh rep stos转载 2013-05-30 16:41:35 · 600 阅读 · 0 评论 -
vs2010静态库 动态库
1.VS2010新建lib工程File->new->Project->Win32 Application->application setting的时候选择static library,去掉Precompiled header新建头文件static_lib.hintadd(intx,inty);intadd(intx,inty,i转载 2013-05-27 12:56:25 · 541 阅读 · 0 评论 -
C++枚举类型同名冲突问题
C++枚举类型同名冲突问题今天被C++枚举类型困扰了……之前写程序一直没有留意到这个问题,原来在C++中使用多个枚举类型时也是不能出现同名的。DAMN IT!个人认为这一点C++的实现确实是不如C#中那样的枚举类型先进……当然这里面是有一定的历史原因的,要兼容C嘛。但愿C++的下一个版本中会进行改进(已经有这个兆头了:-))一时还真没有发现什么好的解决方案。只能是在枚举类型的前面多转载 2013-05-27 10:10:33 · 5110 阅读 · 0 评论 -
C++匿名名字空间
转载自:http://hi.baidu.com/thinapple/blog/item/049df24f6d30bc3eaec3aba7.html名字空间(namespace),是C++提供的一个解决符合名字冲突的特性。标准规定,在不同名字空间中命名相同的符号,代表不同的实体。通常,利用定义名字空间的办法,可以使模块划分更加方便,减少模块间的相互影响。通常定义一个名为MyNameSpace转载 2013-05-27 10:49:55 · 2591 阅读 · 0 评论 -
C结构体之位域
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进转载 2014-02-16 22:27:11 · 659 阅读 · 0 评论