Keep going~
1.如何理解C++
C++在一开始只是C加上一些面向对象特性,它的名称也反映这一关系:C with Classes
今天C++已经是个多重范型编程语言(multiparadigm programming language),同时支持:
- 过程形式(procedural)
- 面对对象形式(object-oriented)
- 函数形式(functional)
- 泛型形式(generic)
- 元编程形式(metaprogramming)
最简单的方法是将c++视为一个语言联邦。何谓联邦?就是其有多种语言组成而非单一语言。
将C++分解为几种主要次语言:
- C:
具有局限:没有模板,没有异常,没有重载…….- Object-Oriented C++:
这部分即为C with Classes, 有:class, 封装, 继承,多态,虚函数……- Template C++:
泛型编程部分。- STL:
标准模板库,STL有自己特殊的办事方式。它对容器,迭代器,算法以及函数对象的规约有极佳的配合与协调。
需要记住彼此的特性,尤其在高效编程中,要注意彼此的协调和配合。
2.常用
2.1数组相关
数组名=数组第一个元素的地址
Array=&Array[0];
如double *pa=Array;
其中pa
为地址,*pa
表示该地址中的值。
Array[1]=*(Array+1)=*(pa+1);
pa[1]=*(pa+1);
注意array = array+1;
无效,原因是数组名为常量。
同时需格外注意new
和delete
配套使用
int *psome = new int[n];
/**
...
**/
delete[] psome;
2.2字符相关
字符常量'S'
是字符串编码的简写表示(ASCII)
字符串常量"S"
表示两个字符(字符S
和\0
)组成的字符串,"S"
实际上表示的是字符串所在的内存地址。
strlen
只计算可见的字符,不把空字符计算在内。
2.3输入相关
cin
使用空白(制表符,换行符和空格)来确定字符串的结束位置。
面向行输入:getline()
读取整行,通过回车键输入的换行符来确定输入结尾。其读取并丢弃换行符。
cin.getline(name,20); //最多19个字符,最后一位用于存空字符(替换换行符)。
面对行输入:get()
与getline()
的区别在于保留换行符在输入队列。
cin.get(name,20);
在调用get()
需要注意
cin.get(name,20);
cin.get(); //或cin.get(name,20).get(); //get()目的是读取换行符, 避免其影响下一次的读取。
cin.get(dessert,20);
混合输入字符串和数字
(cin>>year).get(); //读取数字并丢弃换行符
cin.getline(address,20);
3.类相关
- 抽象:把现实的对象属性转化成数据映射到类上
- 方法:即函数
- 封装:相当于一个盒子,知道干什么就好
- 接口:共享框架,供两个系统交互时使用,基于封装,只留给用户使用的方法,这些方法就是接口
有关类的一些概念:
提供类声明:
通常,数据成员被放在私有部分中,成员函数被放在公有部分中(这一部分内容构成了设计的抽象部分—公有接口)。将数据封装到私有部分中可以保护数据的完整性,这被称为数据隐藏。
实现类成员函数:
通常单独提供函数定义(除非函数很小,利用内联),需要使用作用域解析符来指出成员函数属于哪个类,
char *Bozo::Retort() //利用作用域解析符, 函数定义
类成员函数调用使用(通过类对象)成员运算符句点,
Bozo bozetta; //创建对象 cout<<bozetta.Retort();