c/c++
文章平均质量分 65
Aklemon
这个作者很懒,什么都没留下…
展开
-
操作符重载问题
操作符重载问题1.为什么要使用重载操作符呢?因为普通操作符只能识别内置类型,而对于自定义的类它并不能识别,我们也可以通过重新写一个函数来实现这些操作符的功能,但是这样的做法太麻烦,且代码可读性低.而使用重载操作符,可以令程序更自然、更直观,而滥用操作符重载会使得类难以理解,在实践中很少发生明显的操作符重载滥用。但有些程序员会定义operator+来执行减法操作,当一个重载操作符不明确时,给原创 2016-05-28 19:19:56 · 817 阅读 · 0 评论 -
string的深浅拷贝以及写时拷贝问题
首先string的浅拷贝是让两个不同的指针指向同一块空间,而这在析构的时候会出现将一块空间释放两次,程序会崩溃,因此我们才需要进行深拷贝,即第二个指针开辟和第一个指针一样大小空间,然后将内容复制过去,不过深拷贝又分传统写法和现代写法,两者的区别主要在于拷贝构造和赋值运算符的重载上第一种就是传统写法,拷贝构造和赋值的时候正常开辟空间,正常拷贝内容class String{public: S原创 2017-04-07 21:50:47 · 1230 阅读 · 1 评论 -
struct 和class关键字
浅谈struct与class关键字 1 c/c++中struct的区别 首先struct是C语言中定义结构体时使用; 而在C++中则可以用来定义类,那它在C++中使用和c 中有什么区别呢,来看下面一段代码#include "stdio.h" void fun() { printf("hello,world "); }原创 2016-06-02 10:44:55 · 1415 阅读 · 0 评论 -
泛型编程 模板1
一 泛型编程 首先来看一段实现加法函数的代码int Add(const int &_iLeft, const int &_iRight){ return (_iLeft + _iRight);}这个函数现在只能接收int类型的数据,如果我们想让他成为通用的加法函数该怎么办呢? 根据我们在C++前一段时间所学的知识,有三种方法来解决这个问题,但是这些方法也有 各自不同的问题函数重原创 2016-06-19 02:35:25 · 348 阅读 · 0 评论 -
C++之 继承
1 继承概念: 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持 原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设 计的层次结构,体现了由简单到复杂的认知过程。他除了基类的构造函数和析构函数外全部继承(私有成员也可继承只是不能访问) 2 定义派生类:派生类必须通过使用类派生列表,明确的指出它是从哪些基类继原创 2016-06-18 11:55:22 · 710 阅读 · 0 评论 -
泛型编程之模板 2
上次写了个Max函数,那么它能用来比较字符串吗? 我们传进 需要去的参数是地址,函数将直接比较两个地址的大小,所以显然不能比较字符串,那么如何让它能够比较字符串呢,我们就需要对模板函数进行特化1 模板函数特化:有时候我们并不能够写出对所有可能被实例化的模型都合适的模板,有些时候通用模板也有可能处理不了某个特定的类型,这时就需要对模板函数进行特化 现在我们来看特化后的字符串比较函数template原创 2016-06-28 20:23:10 · 383 阅读 · 0 评论 -
string类之深拷贝的两种写法
1 第一种就是普通写法,需要强调的地方不多,代码中有关地方已经给出注释/*#include<iostream>using namespace std;#class String{public: //这是系统默认的 String()//这是先给pstr开辟一个空间来存放'\0',注意'\0'的写法 :p(new char[1]) { *原创 2016-06-06 22:48:49 · 5222 阅读 · 0 评论 -
对无符号整形数的比特位反转
实现对一个无符号整形数的32比特位反转 然后返回这个二进制数的十进制 首先它有两种解决方式 1)设sum为0,bit为每次拿到的value的最后一位 sum先右移一位,然后将value和1相与,即拿到value的最后一位,然后让sum和bit相与得到sum的值,然后value向右移一位,拿到value的下一个二进制位 注意: sum<<一位不能放在sum第一次和bit或之后原创 2016-06-02 21:13:22 · 2864 阅读 · 0 评论 -
_cdel和thiscall调用约定
1 从尾到头打印单链表 方法 :运用递归 代码实现: void PrintfListFromTailToHead(PNode pHead) { if (pHead == NULL) { return; } else { PrintfListFromTailToHead(pHead->pnext);原创 2016-06-02 14:57:13 · 992 阅读 · 0 评论 -
类和对象知识总结
类和对象知识要点总结原创 2016-05-31 09:53:45 · 339 阅读 · 0 评论 -
探索C++对象模型
首先声明:下面的测试都是windoes32位 vs2013的环境下进行测试的: 本节的主要目标: - 探索多态的实现–虚表 - 探索单继承&多继承的对象模型 - 理解静态绑定和动态绑定 - 菱形继承&菱形虚拟继承的对象模型首先理解多态的定义,首先必须是继承的体系下有虚函数的重写,其次必须是父类的指针或者引用去调用子类的虚函数,只有这两个条件同时存在才能构成多态1.探索虚函数表 概原创 2017-04-01 23:48:50 · 517 阅读 · 0 评论