文章标题
2016-12-25 23:09
267 查看
## 类的常识 ##
struct和class唯一的不同为在struct中未被标明为public,protected,private的默认为public,而class中默认为private,其余完全相同
## 三种数据类型##
1public中函数可以被用户访问
2private中一般放数据成员以及辅助函数
3protect中的数据成员不可以在类外直接访问,但是可以在继承中直接访问(其实可以不用protect,在基类中申明set,get函数然后在派生类中用set,get,就无需用protect,这样封装性更好)
## const跟在函数后面 ##
一般用于print这类输出而不改变数据成员的函数申明后面+const,若想要改变可以将private中的数据成员申明为mutable,还有在main函数中若定义const类对象只能调用const函数
## 友元 ##
可以在类内申明,也可以在类外申明,被申明为友元的函数,类可以直接访问该类的private,同时如果在类中定义了一个友元函数,而在另一个类中调用了该函数编译器是不允许通过的,除非你在类外重新申明该友元
## 构造函数 ##
当类不提供构造函数时,系统自动提供默认构造函数,默认构造函数无形参,结构为空,当提供构造函数时则系统不会自己生成默认构造函数,此时如果你在main函数中创建类对象并且没有提供实参则报错,申明默认构造函数一般写法:类名()=default;
## 构造函数初始化数据成员方式 ##
一种为初始化器初始,一般用于初始化const数据成员或者在继承类中用其基类的构造函数如
class name { public: name(string x) { name=x; } protect: string name; }; class specialname:public name { specialname(string x,int y) :name(x) { num=y; } pricate: int num; };
其余可以使用类内初始化,即一般的初始化方式