1.C++定义了一组内置的基本数据类型:整数类型(int)、浮点数类型(float)、字符型(char)、布尔类型(Boolean);
C++标准库还提供了一组扩展的基本数据类型:字符串(String)、复数(complex number)、向量(vector)、列表(list);
例1:#include<String>
String str = "getting started";
#include <vector>
vector<string> chapter_titles(20);
2.预处理器指示符
#include:指示符读入制定文件的内容
#ifndef _H
#define _H
#endif
条件指示符可防止头文件的重复处理;
#ifdef DEBUG
#endif
调试使用
#ifdef __cplusplus
extern "c"
#endif
我们可以根据他来判断该程序是否是C++程序,以便有条件地包含一些d代码。
__LINE__:记录文件已经编译的行数
__FILE__:包含正在被编译的文件的名字
__TIME__:编译时间,时间格式为hh:mm:ss
__DATE__:编译日期
assert():是C语言标准库中提供的一个通用处理器宏。
3.注释
(1)C++中有两种注释符号,一种(/× ×/);注释对不能嵌套;解决嵌套注释的办法:在星号和斜线之间加一个空格
(2)双斜线(//)
4.文件的输入和输出
(1)iostream库
例2:#include <iostream.h>
#include <fstream>
//打开一个输出文件
ofstream outfile("name of file");
if(!outfile){
cout<<"sorry!"
}
//打开一个文件供输入
ifstream infile("name of file")
if(!infile){
cout<<"sorry!";
}
#include <iostream.h>
#include <fstream.h>
#include "string.h"
int main(){
ofstream outfile("out_file");
ifstream infile("in_file");
if(!infile){
cout<<"unable to open input file!\n";
return -1;
}
if(!outfile){
cout<<"unable to open output file!\n";
return -2;
}
char word[1024];
while(infile>>word){
cout<<word<<endl;
outfile<<word<<'\n';
}
return 0;
}
上述例子实现文件的拷贝;
4.C++对数组类型的支持
(1)内置数组的缺点?
(2)如何改善?
(3)Array类型与C++标准库中的vector类的比较,并了解泛型算法;
5.动态分配内存和指针
(1)静态内存分配
(2)动态内存分配
(3)内存泄漏:忘记删除动态分配的内存
(4)函数重载机制:允许两个或更多个函数使用同一个名字,限制条件是他们的参数表必须不同、参数类型不同、或者参数的数目不同;
(5)构造函数和析构函数
(6)域操作符:双冒号(::);
(7)泛型设计
(8)模板机制
5.基于异常的设计(exception)
6.命名空间
7.标准数组--向量
向量是一个类模板:
vector<int> ivec(10); //定义一个包含10个整型对象的向量
vector<string> svec(10);//定义一个包含10个字符串对象的向量
Array类模板与vector类模板的实现之间有两个主要区别:
第一个:vector类模板支持“向现有的数组元素赋值”的概念以及"插入附加元素"的概念,即vector数组可以在运行时刻动态增长;
第二个:vector类不是提供一个巨大的“可以适用于向量”的成员操作符,而只是提供了一个最小集。
#include<vector>
//创建vector对象的各种方法
vector<int> veco;//空的vector
vector<int> vec1(size);
vector<int> vec2(size,value);
.......
遍历方法:
(1):下标遍历
(2):使用迭代器对来标记向量的起始处和结束处(iterator pair);
==>>迭代器:是一个支持指针类型抽象的类对象,vector类模板提供了一堆操作begin()和end(),他们分别返回指向“向量开始处”和:结束处后一个:的迭代
器。
例3:#include<vector>
extern int getSize();
void mumble(){
int size = getSize();
vector<int> vec(size);
vector<int>::iterator iter = vec.begin();
for(int ix=0;iter !=vec.end(); ++iter,++ix){
*iter = ix;
//...
}
}