摘要:1. 什么是STL 它的全名是stand template library, 标准模板库,主要是将一些结构和算法写成模板,以便能够实现对任意类型的对象都可以操作,而不需要再一次去写一些算法及结构。 它主要有以下三个概念: 容器--容纳各种数据类型的结构,是类模板 迭代器--类似于指针...
阅读全文
摘要:C++中的高阶手法就会用到泛型编程,主要有函数模板, 在程序中使用模板的好处就是在定义时不需要指定具体的参数类型,而在使用时确可以匹配其它任意类型, 定义格式如下template T func(T ...) {}让我们来看一个简单例子,写一个swap()将两个整数交换位置,void swap(int...
阅读全文
摘要:用于文件操作主要有两个类ifstream,ofstream,fstream,例子如下1. 读操作#include using name space std;int main(){ cCar car; // initialize a car object ifstream...
阅读全文
摘要:1. 问题 在C++中,在进行输入输出操作时,我们首先会想到用cout, cin这两个库操作语句来实现,比如 cout > s; cout,cin分别是库ostream, istream里的类对象 如果想要cout,cin来输出或输入一个类对象,这样的需求它能满足吗?很显然,原来的cou...
阅读全文
摘要:windows 编程,多线程临界区: CRITICAL_SECTIONcs; //相当于给该代码段加了一把锁,其它线程不可访问,直到当前线程释放资源InitializeCriticalSection(&cs);//线程1:EnterCriticalSection(&cs); do something...LeaveCriticalSection(&cs);//线程2:EnterCriticalSection(&cs);do somethingLeaveCriticalSection(&cs);//最后:DeleteCriticalSection(&
阅读全文
摘要:一、printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位填0,如省略表示指定空位不填。 ④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。 ⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。 --------------------------------------- 格式字
阅读全文
摘要:未加extern “C”声明时的编译方式 首先看看C++中对类似C的函数是怎样编译的。 作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为: void foo( int x, int y ); 该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangledname”)。_foo_int_int这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠...
阅读全文
摘要:class String{public: String(const char *str = NULL);//普通构造函数 String(const String &other);//拷贝构造函数 ~ String(void);//析构函数 String & operator =(const String &other); //赋值函数private: char*m_String;//私有成员,保存字符串};String::~String(void){ cout<<"Destructing"<<endl; delete [] m
阅读全文
摘要:UML类图与类的关系详解转:2011-09-18 16:45在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。基本概念 类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图的3个基本组件:类名、属性、方
阅读全文
摘要:运算符重载为类的友元函数,就必须把操作数全部通过形参的方式传递给运算符重载函数。如:class complex{public: complex(double x,double y):real(x),imag(y) {} //friend complex operator + (complex c1,complex c2); //友元函数 //friend complex operator - (complex c1,complex c2); complex operator +(complex c2) //非友元函数定义 { return complex(real + c2.r...
阅读全文
摘要:区别:就在于函数的形参,语法规定,前置单目运算符重载为成员函数时没有形参,后置单目运算符重重载为成员函数时需要一个int型形参,这个int型参数在函数体中并不使用,纯粹用来区别前置与后置。课本上一个例子:#includeusing namespace std;class Clock{ pu...
阅读全文
摘要:类对象拷贝的简单例子。 #include<iostream>usingnamespacestd;classCExample{private: inta;public: CExample(intb) {a=b;} voidShow() {cout<<a<<endl;}};intmain(){ CExampleA(100); CExampleB=A; B.Show(); return0;}运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象B分配了内存并完成了与对象A的复制过程。当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候
阅读全文
摘要:转载:1、输入。两种方法:cin 被用来输入字符序列值时,它通常与函数getline 一起使用,方法如下:cin.getline ( char buffer[], int length, char delimiter = ' \n'); 这里buffer 是用来存储输入的地址(例如一个数组名),length 是一个缓存buffer 的最大容量,而delimiter 是用来判断用户输入结束的字符,它的默认值(如果我们不写这个参数时)是换行符newline character ('\n')。cin >> mybuffer; 这种方法也可以工作,但它有以下
阅读全文