
C/C++学习笔记
johnsonlrd
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言/C++中的函数指针解读
函数指针从名子上看就知道它也是一种指针,一个指向函数入口地址的指针,举个简单的例子来看看函数指针的用法。 1、通过函数指针调用函数。 #include #include int Sum(int a, int b) { return a + b; } int Sub(int a, int b) { return a - b;转载 2012-07-20 12:12:26 · 338 阅读 · 0 评论 -
C++学习笔记(1)-----Complex类运算符重载
最近在学习iphone开发,上着培训班,要从C,C++学起。虽然之前学校里已经学习过这两种语言。但是最近在学习的过程中,我发现自己已经忘记了蛮多知识点了。记得当时学C++ 的时候,觉得运算符重载比较恶心,没好好看它,今天在做C++的作业时,碰到它了,我就头疼。果然一开始写得很不顺手,于是拿着“谭哥”的书,仔仔细细地把运算符重载那章看了一遍。于是写下下面这些东西。(这个是个作业噢~学习C++的童鞋都原创 2012-07-25 09:31:58 · 667 阅读 · 0 评论 -
C++学习笔记(3)----字符串常量
用双撇号括起来的部分就是字符串常量,如“abc”,"Hello!"都是字符串常量。字符串常量"abc"在内存中占用4个字节(而不是3个字节),编译系统会在字符串最后自动加上一个'\0'作为字符串结束标志。但'\0'并不是字符串的一部分,它只作为字符串的结束标志。字符串常量通常要用字符数组来存放。 字符串常量"abc\n"包含几个字符? 不是5个而是4个字符,其中“\n”是一个转义字符。但它在内原创 2012-07-25 11:09:00 · 2158 阅读 · 0 评论 -
C++学习笔记(6)----C++的友元函数----你懂了吗?
1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数 优点:能够提高效率,表达简单、清晰 缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已的情况下才使用友元函数。转载 2012-07-27 09:18:05 · 1995 阅读 · 0 评论 -
C++学习笔记(7)----关于C++的内部类
一直以来我都对Java中的内部类比较熟悉,但是却忽略了C++中的内部类。现对其做出如下总结。 程序1: [cpp] view plaincopyprint? #include class Outer { public: Outer() { cout转载 2012-07-27 10:39:14 · 330 阅读 · 0 评论 -
C++学习笔记(5)----类的const和非const成员函数的重载
类的const和非const成员函数的重载 我们从一个例子说起,来看上一篇文章中的String类, 我们为它提供一个下标操作符([ ])以读写指定位置的字符(char)。 只要了解过C++的操作符重载的语法,很快就可以写出下面这个[]操作符重载函数: char& operator[](int posion) // function_1 { return dat转载 2012-07-26 11:49:13 · 555 阅读 · 0 评论 -
C++学习笔记(8)----闲聊“拷贝构造函数”
What is it? 拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。 When use it? 在C++中,下面三种对象原创 2012-08-01 11:35:03 · 488 阅读 · 0 评论 -
C++学习笔记(10)----泛型(模版)的学习
泛型的基本思想: 泛型编程(Generic Programming)是一种语言机制,通过它可以实现一个标准的容器库。 像类一样,泛型也是一种抽象数据类型,但是泛型不属于面向对象,它是面向对象的补充和发展。 在面向对象编程中,当算法与数据类型有关时,面向对象在对算法的抽象描述方面存在一些缺陷。 比如对栈的描述: class stack { push(参数类型) //入栈算法转载 2012-08-16 09:08:24 · 363 阅读 · 0 评论 -
C++学习笔记(9)----异常处理
转载自:http://blog.youkuaiyun.com/tuwen/article/details/2295853 异常:程序执行期间,可检测到的不正常情况。 例如:0作除数;数组下标越界;打开不存在的文件;远程机器连接超时;malloc失败等等。 程序的两种状态: 正常状态和异常状态,发生不正常情况后,进入异常状态,从当前函数开始,按调用链的相反次序,查找处理该异 常的程序片断。 1.th转载 2012-08-14 09:17:36 · 299 阅读 · 0 评论 -
C++学习笔记(11)----static_cast、dynamic_cast、reinterpret_cast、和const_cast
static_cast、dynamic_cast、reinterpret_cast、和const_cast 关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynam转载 2012-08-16 09:21:54 · 367 阅读 · 0 评论 -
C++学习笔记(13)----static_cast、dynamic_cast、reinterpret_cast、和const_cast----(2)
C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(exdivssion) // cast exdivssion to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的转载 2012-08-16 09:46:57 · 343 阅读 · 0 评论 -
Vector容器学习
vector简介 vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。 vector的扩充机制:按照容器现在容量的一倍进转载 2012-08-16 11:45:26 · 3623 阅读 · 0 评论 -
C++学习笔记(12)----dynamic_cast详解
dynamic_casttype-id> (expression) 这个表达式将 expression 转换为一个 type-id 类型的对象。 Type-id 必须是一个指针、指向一个已经定义类的类型或一个指向 VOID 的指针。 Expression 的类型必须是一个指针,如果 type-id 是一个指针;当 type-id 是一个引用的时候必须是一个左值。 如果 type-i转载 2012-08-16 09:34:34 · 374 阅读 · 0 评论 -
C++学习笔记(4)----C++变量名规则
先介绍标识符的概念。用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列称为标识符(identifier)。简单地说,标识符就是一个名字。变量名是标识符的一种,变量的名字必须遵循标识符的命名规则。 C++规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。注意:在C++中,大小写字母被认为两个不同的字符。原创 2012-07-25 11:19:25 · 898 阅读 · 0 评论 -
C++学习笔记(2)----字符数据在内存中的存储形式
将一个字符常量存放在内存中的时候,实际上不是把该字符本身放到了内存单元中,而是将字符相应的ASCII码存放到内存单元中。 既然字符数据是以ASCII码存储的,它的存储方式与整型的存储形式类似。一个字符数据可以赋给一个整型变量。也可以对字符数据进行算术运算,此时,相当于对它们的ASCII码进行算术运算。原创 2012-07-25 10:41:13 · 637 阅读 · 0 评论 -
C/C++中extern关键字详解
转载来自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html 1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与转载 2012-07-20 11:28:43 · 1081 阅读 · 0 评论 -
C/C++中static关键字详解
转载来自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777441.html 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。 用法1:函数内部声明的static变量,可作为对象间的一种转载 2012-07-20 11:27:27 · 495 阅读 · 0 评论 -
void及void指针含义的深刻解析
转载来自:http://blog.youkuaiyun.com/yming0221/article/details/6249151 void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。 void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如: int *pint; void *pvoid; p转载 2012-07-20 12:21:44 · 244 阅读 · 0 评论 -
C++ 如何定义头文件?为何要用到ifndef和#define,#endif?有何用
今天和宿舍同学讨论一个小程序,发现有点地方不大懂······ 是关于头文件里面的一些地方: 例如:要编写头文件test.h 在头文件开头写上两行: #ifndef _TEST_H #define _TEST_H//一般是文件名的大写 ············ ············ 头文件结尾写上一行: #endif 大概是以前没有学好转载 2012-07-20 11:38:06 · 1636 阅读 · 0 评论 -
C++传值&传引用&传指针
相关概念 c++三种传递参数方式 传参数的值(称值传递,简称传值),传参数的地址(称地址传递,简称为传址),和引用传递(称为传引用),相应的函数传值调用,传址调用和传引用调用 形参、实参 函数定义时参数表中的参数称为形式参数,简称形参;函数调用时参数表中的参数称为实际参数,简称实参。实参和形参之间的数据传递称为形实结合转载 2012-07-20 11:31:14 · 9453 阅读 · 0 评论 -
C语言回调函数学习
对指针的应用是C语言编程的精髓所在,而回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。 为什么要使用回调函数呢?我们先看一个小例子: Node * Search_List (Node * node, const i转载 2012-07-20 12:13:06 · 295 阅读 · 0 评论 -
继续C++继承的话题
析构函数 如果一个类想被别人继承,通常析构函数要声明为虚函数,否则,如下代码就会出现未定义情况。 Base* p=new Derived(); delete p; 这句话反过来说,就是如果你不打算让别人派生你的类,就不要把析构函数声明为虚函数,当然对方是菜鸟的话,你也没办法。 极端特殊情况下,只要使用者保证不会多态的析构(像上面的例子),也可以通融。 继承与访问转载 2012-08-06 10:07:12 · 333 阅读 · 0 评论 -
C++的继承
C++ 支持多种程序设计风格,其中就包括对面向对象设计的支持。我们今天在这里将会为大家详细介绍一下各种C++继承方式的具体应用方法,希望能够帮助大家对这方面的知识有一个深入的认识。 C++继承方式总共分为以下几种: public、private、protected三种(它们直接影响到派生类的成员、及其对象对基类成员访问的规则)。 (1)public(公有继承):继承时保持基类中各转载 2012-08-06 09:58:29 · 257 阅读 · 0 评论 -
预处理(三)
在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理. C 初学者可能对预处理器没什么概念, 这是情有可原的: 一般的C编译器都将预处理, 汇编, 编译, 连接过程集成到一起了. 编译预处理往往在后台运行. 在有的C编译器中, 这些过转载 2012-07-23 12:17:19 · 1096 阅读 · 0 评论 -
预处理(一)
预处理过程是扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句和宏转载 2012-07-23 12:14:08 · 268 阅读 · 0 评论 -
预处理(二)
一.前言 1.编译一个C程序涉及很多步骤。其中第一步骤称为预处理(preprocessing)阶段。C预处理器(preprocessor)在源代码编译之前对其进行文本性质的操作。 2.它的主要任务包括删除注释、插入被#include指令包含的内容、定义和替换由#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令经行编译。 二.预定义符号 1.以下为转载 2012-07-23 12:14:54 · 556 阅读 · 0 评论 -
关于 while(1)和for(;;)效率问题的一点想法
这几天看到好友的文章关于while(1)和for(;;)效率的讨论,手痒说了两句。回头一寻思,自己也只是推断。没有做任何实验,我们就看看这两种写法到底有什么区别: 实验环境:IAR EWARM 5.2 我就随便在一个嵌入式项目上做文章了,首先工程C语言编译优化选择了None, 输出选择带汇编输出,输出的汇编文件和C语言对应上。转载 2012-07-23 13:07:27 · 411 阅读 · 0 评论 -
C++ 容器及选用总结
目录 ==================================================== 第一章 容器 第二章 Vector和string 第三章 关联容器 第四章 迭代器 第五章 算法 第六章 函数 第七章 在程序中使用STL ===============================================转载 2012-08-16 11:47:21 · 483 阅读 · 0 评论