C++基础摘要
来源:互联网 发布:windows进程内存监控 编辑:程序博客网 时间:2024/06/11 17:25
几年以后再一次看C++,发觉自己在语言上其实还是个一知半解,经常追求会用就行,不求甚解的门外汉。写这篇的目的一个是为了梳理下脉络,忽略细节,先记一下基础中的基础,另一个是为了响应各大神的号召,看过就要写,不写下来过几天就要忘。
一、数据类型
基本数据类型:
bool:
可赋值一切实数,0为false,其余都为true
char:
0-127的整数,或ascii的字符
wchar_t:
宽的char,可存储汉字,日语等宽字符
int:
默认为signed int,如需要无符号数,需明确写明unsigned int,或简写为unsigned
long:
同上默认为signed long,无符号为unsigned long
float:
由于精度问题,偶尔会由于精度的四舍五入出现些莫名其妙的问题,一般不推荐使用
double:
不推荐float那就剩它了,速度在一些机器上比float更快,说明在效率方面和float比也没有明显劣势 ^_^
标准库类型:
§ string: 98版的c++没有把string作为基本数据类型,使用前必须包含
1. 创建方法:
string s = "This is a string.";
string s1("This is another string");
2. s.empty() 返回s是否为空串
3. s.size() 返回s中字符的个数
4. s[n] 返回s中位置为n的字符,位置从0计数
5. s + s1 连接成一个新字符串并返回
6. s == s1 比较内容是否相等
7. 在各个语言里和string有关的操作方法都相当繁多,先就到这,别的用到了再说
§ vector: 书上说现在已经不推荐直接使用数组和指针了,除了在非常要求速度效率的场合,都建议用这个vector来代替,我半信半疑的想去topcoder上找个神仙的代码查证下,结果发现单位的网不给力,居然登陆不上去。只好先记下来再说。
1. vector所在的包是
2. vector是一个容器类模板,用vector产生对象时的形式为:vector
3. 创建方法:
vector
vector
vector
4. v1.push_back(t); 在v1中装入t
5. v1[n] v1中第n个元素
- § bitset: C++标准库提供了一个专门用来处理二进制位的类bitset,需引用包
,个人感觉在某些方面比用整型和位操作符的组合要方便些
1. 创建方法:
bitset
bitset
bitset
bitset
2. b.size(); 返回b中二进制位的个数
3. b.count(); 返回b中1的个数
4. b[pos]; b中在pos处的二进制位
5. b.set(); 所有二进制位都置为1
6. b.reset(); 所有二进制位置0
7. b.set(pos); pos处置为1
8. b.reset(pos); pos处置为0
9. b.flip(); b.flip(pos); 取反
10. b.to_ulong(); 返回bitset对应的unsigned long值
类类型:
§ class和struct:这两个可以看做声明特殊类型,即类类型,和结构类型的特殊数据类型,它们的对象也是一个类型。所以在class和struct的定义块后面才都需要分号。格式如下:
class class_name{
public:
int function_name(){
………
}
private:
int a_int;
};
struct的格式就是把上面的class换成struct,最后的分号千万都不能落掉。两者的区别在于,不写private和public标号的时候,struct默认所有的变量和方法都是public的,而class默认认为是private的。
二、控制结构
由于大多数语言控制结构的写法大同小异,这里只简单列举格式,不做详细分析。
分支:
§ if-else:
if(expression){
……
}else if(another expression){
……
}else{
……
}
§ switch-case:
switch(expression){
case 1:
……
break;
default:
……
}
c++中的switch分支中的expression只能是整型,如int,bool或char型。
循环:
§ while:
while(expression){
……
}
或:
do{
……
}while(expression); //与while不同,这里需要用分号结束
§ for:
for(int i=0;i<10;i++){
……
}
三、函数
函数的声明和定义,大多语言也都差不多,这里也只简单写下,留待以后再做深究。
return_type function_name(param_type, param_type parameter); //声明里里的参数列表可以只写类型,不写变量名
return_type function_name(param_type parameter1, param_type parameter2){
……
return return_val; //如果return_type为void,这一句略去
}
四、小结
该写和该补充的细节都还有很多,比如外部类型,常量的使用;类的构造方法析构方法,继承与多态;指针函数和函数指针,引用;异常处理与反射机制……
这一次只是作为一个引子,以后尽量把各部分都完善的填充起来。
- c摘要
- 《More Effective C++》重点摘要一:基础议题
- orcale基础摘要
- Diameter基础协议摘要
- Python基础笔记摘要
- Linux基础学习摘要
- C++基础摘要
- Linux基础命令摘要
- LINUX - 基础摘要 01
- 前端基础摘要
- C学习摘要
- c初学笔记摘要
- 《Effective C++》读书摘要
- 《Effective C++》读书摘要
- C语言简单摘要
- 《Effective C++》读书摘要
- 《Effective C++》读书摘要
- 《Effective C++》读书摘要
- M8系统开发手记(2)
- 材质和纹理的区别
- oracle的OS验证
- Asterisk 1.8 sip 协议栈分析(1)
- MItSelectionList::setFilter()和MItSelectionList::reset()
- C++基础摘要
- struct中的地址对齐
- Asterisk 1.8 sip 协议栈分析(2)
- 可视电话的编程记录
- 教学课件 ---- 诗词游戏的开发
- 图片上传前的预览与检测
- 设计模式(三)--装饰者模式(1)
- NDIS6过滤驱动的编写
- xml作用