
c++
jackywgw
这个作者很懒,什么都没留下…
展开
-
【zz】c++学习
C++当成一门新的语言学习,和C没啥关系!真的。<br />1.把C++当成一门新的语言学习(和C没啥关系!真的。); <br />2.看《Thinking In C++》,不要看《C++变成死相》; <br />3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; <br />4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言; <br原创 2011-02-24 21:53:00 · 569 阅读 · 0 评论 -
使用throw抛出异常
<br />使用throw抛出异常<br /><br />本人节选自《21天学通C++》一书<br /> 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:<br />throw 表达式;<br /> 如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与c转载 2011-03-22 16:24:00 · 2138 阅读 · 0 评论 -
栈的c++实现
<br />#ifndef __STACK__H__<br />#define __STACK__H__<br />#include<iostream><br />#include <vector><br />using namespace std;<br />template <typename Object><br />class stack<br />{<br /> public:<br /> stack(int size=-1):top(siz原创 2011-03-29 20:35:00 · 410 阅读 · 0 评论 -
队列的c++实现
#ifndef QUEUE_H_#define QUEUE_H_#include #include using namespace std;template class queue{private:struct Node{Object data;Node *next;Node(const Object &d = Obj原创 2011-12-20 16:20:51 · 500 阅读 · 0 评论 -
查看宏展开后的内容
gcc -M *.c/*.h > *.txtg++ -M *.cpp/*.h > *.txt举例:a.cpp 内容如下:#include #include using namespace std;#define TEST_GROUP_BASE(testGroup, baseclass) \ int externTestGroup##testGroup原创 2012-04-17 14:48:37 · 1324 阅读 · 0 评论 -
posix 信号量---生产者消费者(一)
单生产者单消费者1.有名信号量的单生产者单消费者#include "../unipc.h"#define NBUFF 10#define SEM_MUTEX "mutex"#define SEM_NEMPTY "nempty"#define SEM_NSTORED "nstored"#define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH原创 2014-12-22 16:30:49 · 718 阅读 · 0 评论 -
posix 信号量---生产者消费者(二)
多个生产者一个消费者#include "../unipc.h"#define NBUFF 10#define MAX_PRODUCE 10#define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)int nitems;int nproducers;struct { int index; int buff[NBUFF];原创 2014-12-22 17:54:09 · 521 阅读 · 0 评论 -
C++ Vector size和capcity的增加方式
创建一个vector对象vector a;后, vector对象a的size和capacity都是0。 当插入第一个元素后,size和capacity都变为1 当插入第二个元素后,size和capacity都变为2 当插入第三个元素后,size变为3, 由于capacity为2,小于3, 则capacity=capacity*2,变成4 …… 当插入第五个元素后,size变为5, 由于ca原创 2017-07-14 16:06:15 · 3031 阅读 · 0 评论 -
c++ Eclipse 中文乱码
c++ 代码使用Eclipse时,cout 输出中文时是乱码。修改:在Window->Preferences->General->Workspace 面板Text file encoding 选择UTF-8原创 2017-07-07 16:40:54 · 1252 阅读 · 0 评论 -
__attribute__ ((packed)) 的作用
看到内核代码里面有attribute ((packed)) ,感觉比较奇怪,查了百度后知道其作用。 attribute ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如: 在T原创 2017-08-01 17:39:40 · 701 阅读 · 0 评论 -
c++学习----const常量折叠
//============================================================================// Name : Constant_folding.cpp// Author : gwwu// Version :// Copyright : Your copyright notice// Des原创 2017-08-24 17:35:03 · 395 阅读 · 0 评论 -
C++中struct 和 class的sizeof大小
//============================================================================// Name : Sizeof.cpp// Author : gwwu// Version :// Copyright : Your copyright notice// Description :原创 2017-08-23 14:12:05 · 960 阅读 · 0 评论 -
c++中的引用
//============================================================================// Name : FreeStandingReferences.cpp// Author : gwwu// Version :// Copyright : Your copyright notice原创 2017-08-28 17:01:24 · 759 阅读 · 0 评论 -
c++ vector resize & reserve
<br />首先必须弄清楚两个概念:<br />1.capacity<br /> 指容器在分配新的存储空间之前能存储的元素总数。<br />2. size<br /> 指当前容器所存储的元素个数<br /> <br />在弄清这两个概念以后,很容易懂resize和reserve的区别<br /> <br />1).reserve表示容器预留空间,但并不是真正的创建对象,需要通过insert()或push_back()等创建对象。<br />resize既分配了空间,也创建了对象。<br /> <br原创 2011-03-14 15:01:00 · 20926 阅读 · 4 评论 -
c++ primer学习之--------模板
模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号扩住的一个或多个模板形参的列表,形参之间以逗号分隔。 模板形参表不能为空。 模板形参可以是表示类型的类型形参,也可以是表示常量表达式的非类型形参。类型形参跟在关键字class或typename之后定义。 如果是类型形参,该形参表示未知类型,如果是非类型形参,它是一个未知值。1. inline函数模板 说明符放在模板形参表之后、返回类型之前,不能放在关键字templat原创 2011-02-22 11:15:00 · 471 阅读 · 0 评论 -
c++ primer 学习之------类
1。类的数据成员 数据成员的声明开起来很像在块域或名字空间域中的变量声明。但是,除了静态(static)数据成员外,数据成员不能在类体内被显示地初始化(在windows vc6.0上实验,结果是都不能在类体内初始化静态数据成员和const静态数据成员)。例如:class First{ int memi = 0; // error double memd = 0.0; //error};类的数据成员通过类的构造函数进行初始化。2。成员访问 访问限定: 1)p原创 2011-01-28 20:03:00 · 396 阅读 · 0 评论 -
typedef定义函数指针
1。简单的函数指针 形式: 返回类型 (*函数名)(参数表) char (*pFun)(int); //定义一个指针变量pFun.它是一个指向某种函数的指针,这种函数参数是一个int型,返回值是char类型。 char glFun(int a){ return 'a';}//定义函数glFun()。函数的函数名实际上就是一个指针,函数名指向该函数的代码在内存中的首地址。 void main()原创 2011-01-31 11:21:00 · 531 阅读 · 0 评论 -
C++ typedef使用方法总结
C++编程语言中,有一种专门应对类型定义的用法,叫做C++ typedef。那么我们应该如何正确理解这一应用呢?在这篇文章中,我们会通过C++ typedef不同使用方法来对这一应用进行详细介绍。C++ typedef,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。例如:typedef unsigned int UINT; int main (int argc, char *argv[]) { unsigned int a;转载 2011-01-31 13:40:00 · 510 阅读 · 0 评论 -
c++ primer学习之---------类的初始化、赋值和析构
1.类的初始化 class Data { public: int ival; char *ptr; } class Data 是否需要构造函数初始化? 不一定需要,可以使用显示初始化,因为它的成员都是public类型,在其他地方可以被调用。而private类型只能在类函数和友元中被引用。 int main() { Data local1 =原创 2011-02-03 16:16:00 · 646 阅读 · 0 评论 -
汉诺塔
1.有三根杆子X,Y,Z。X杆上有若干碟子 <br />2.每次移动一块碟子,小的只能叠在大的上面 <br />3.把所有碟子从X杆全部移到Z杆上<br /><br />#include <iostream><br />using namespace std;<br /><br />void move(int n, char x, char y, char z)<br />{<br /> if(n >= 1)<br /> {<br /> move原创 2011-03-01 16:11:00 · 842 阅读 · 0 评论 -
c++ primer学习之----重载
6。操作符-> 可以为类类型的对象重载成员访问操作符箭头(->),它必须被定义为一个类的成员函数。原创 2011-02-15 10:58:00 · 472 阅读 · 0 评论 -
c++ primer 之-------操作符operator()
class absInt { public: int operator() (int val) { int result = val return result; } }; 重载的operator()必须被声明为成员函数,它的参数表可以有任意数据的参数,而参数类型可以是给出被作为函数参数的任何类型。原创 2011-03-06 22:05:00 · 1025 阅读 · 0 评论 -
c++ primer学习之--------抽象容器类型
顺序容器(sequnce container)拥有由单一类型元素组成的一个有序集合。两个主要的顺序容器是list和vector,还有一个deque(提供了与vector相同的行为,但是对于首元素的有效插入和删除提供了特殊的支持。 关联容器(associative container)支持查询一个元素是否存在,并且可以有效地获取元素。两个基本的关联容器类型是map(映射)和set(集合)。 map是一个键/值对:键用于查询,而值包含我们希望使用的数据。 set包含一个单一键值,有效支原创 2011-02-15 14:53:00 · 924 阅读 · 0 评论 -
c++ primer 学习之---------公用、私有和受保护的继承
公用、私有和受保护的继承 基类本身指定对自身成员的最小访问控制。如果成员在基类中为 private,则只有基类和基类的友元可以访问该成员。派生类不能访问基类的 private 成员,也不能使自己的用户能够访问那些成员。如果基类成员为 public 或protected,则派生列表中使用的访问标号决定该成员在派生类中的访问级别:• 如果是公用继承,基类成员保持自己的访问级别:基类的 public 成员为派生类的 public 成员,基类的 protected 成员为派生类的 protected成员。原创 2011-02-18 11:13:00 · 936 阅读 · 0 评论 -
c++ primer学习之-------引用
引用 定义的时候必须初始化为指向一个对象。 int ival = 1024; int &ref_value = ival; 指向引用的指针: int *&ptrVal = &ival;翻译 2011-02-20 20:43:00 · 480 阅读 · 0 评论 -
c++ primer学习之-----面向对象编程(继承与动态绑定)
面向对象编程基于三个基本概念:数据抽象(类)、继承(用类派生从一个类继承另一个)和动态绑定(使得编译器能够在运行时决定是使用基类中定义的函数还是使用派生类中定义的函数。 面向对象编程的关键思想是多态性(polymorphism)。多态性:在许多情况下可以互换地使用派生类型或基类型的“许多形态”。在c++中多态性仅用于通过继承而相关联的类型的引用或指针。 在c++中,基类必须指出希望派生类重新写哪些函数,定义为virtual函数是基类期待派生类重新定义的函数,基类希望派生类继承的函数原创 2011-02-16 14:36:00 · 1053 阅读 · 0 评论 -
静态对象的初始化
//============================================================================// Name : StaticObjectsInFunctions.cpp// Author : gwwu// Version :// Copyright : Your copyright notic原创 2017-08-29 10:14:19 · 1196 阅读 · 0 评论