1.C++中处理异常和C以及Java的处理过程类似,通常都是try,throw,catch的模式,throw抛出的语句一般会出现在被调用函数内,而其对应的catch则要去相应的调用函数中去进行异常类型的匹配,不过也有几点不同:
catch中的输出语句为:cerr<<....<<endl;
catch(...){} //匹配所有的throw语句;
catch(****),catch中括号的类型为char *即可解决大部分异常,无需用到高级的类型如enum,类等等
char * p=....
...
try
{
...
throw p;
....
}
catch(char * t)
{
....
}
2.private:只能被类内的成员函数访问;
public:程序中的所有函数都可被访问;
protected:只能被类内及其派生类的成员函数访问;
3.多态:C++中多态中提到了UpCast(向上数据类型转换:即派生类->基类)
class B:public A;
B b; A *a=&b; 或者A & a=b; //可以调用派生类的成员函数
upcast一般和虚拟函数相关,即基类中所有的成员函数前都要加上virtual,如果某个类中有成员函数为虚拟函数,则该类就会为抽象类
我觉得多态有时候会使程序变得很繁琐,尽管它能够提高程序效率,不过有一点我觉得是挺好的,它能够解决成员函数被隐藏的现象,被隐藏的概念可以联想到Java中的子类重写父类的方法一样
注意:声明一个类后要记得加分号,这点我总是忘记,反映出了我没有养成良好的编程习惯,引以为鉴。。。
4.this指向当前对象,在一定的条件下可以用来进行调试;
5.运算符重载很麻烦,其实它实现的就是对运算符(+,-,*,/....)进行再构造,我觉得没有多大必要 operator + (...)
6.由于字符串是由字符构成的,因此string * s="....";是会出现错误的,因为类型不匹配,前者是字符串指针,后者是字符;
字符串有许多有用的成员函数,可以实现字符串间的各种转换,且字符串我觉得最大的特色是它可以直接拿来做比较运算,赋值运算,如string s1,s2;
s1+=s2 s1>s2 s1=s2 s1==s2......
7.C++中vector---向量,其实就像是一个数组,因此也不是很复杂,vector<数据类型> 变量; //vector有很多成员函数,可以直接拿来使用,如push_back()---存入数,其输出和一般的数组输出一样
vector<vector<int>> m //二维向量