@songying
2019-01-28T13:25:50.000000Z
字数 2380
阅读 1307
c++
class class_name{
// 各个成员声明或定义
}
类的所有的成员都必须在类的内部声明
我们有时也可以使用struct来创建类,而使用class 与struct 定义类的唯一区别就是默认的访问权限, struct中,默认所有访问权限是public, 而 class 中默认访问权限是private。
成员函数可以定义在类内也可以定义在类外。
// 定义在类内
class class_name{
type func_name(type){
// 成员函数内容
}
}
// 采用范围解析运算符 :: 定义在类外
type class_name::func_name(type){
// 成员函数内容
}
默认情况下类的成员都是private的
修饰符 | 说明 |
---|---|
public | 成员变量或函数在程序类的外部是可访问的。我们常用public来定义类的接口。 |
private | 成员变量或函数在类外部是不可访问的,只有类和友元函数可以访问私有成员,子类也不可访问。我们常用private封装类的实现细节。 |
protected | 成员变量或函数在子类中是可以访问的,外部的其余类不能访问 |
继承方式 | 说明 |
---|---|
public继承 | 成员的访问属性不发生变化 |
protected继承 | public成员的属性变为protected, 其余成员属性不变 |
private 继承 | 所有成员属性变为private |
构造函数是类的一种特殊成员函数,其在每次创建类的新对象时执行。
- 如果存在类内的初始值,用它类初始化成员
- 否则,默认初始化该成员
class class_name{
public:
class_name(type val);
}
析构函数在每次删除所创建的对象时执行。
class class_name{
public:
~class_name();
}
拷贝构造函数使得你在创建对象时,能够以同一类中之前创建的对象来初始化新创建的对象。
class class_name{
public:
class_name (const class_name &obj);
}
友元函数不是类的成员函数,其定义在类的外部,但可以访问类的所有私有成员和保护成员。
class class_name{
public:
friend type func_name(type val);
// friend class class_name; // 友元类
this->member;
class_name *ptr;
ptr->member; //访问成员
静态成员在类的所有对象中是共享的。
静态成员函数没有 this 指针,只能访问静态成员数据、其他静态成员函数和类外部的其他函数
class 子类名 : 访问修饰符 父类名{
}
class 子类名:访问修饰符 父类名,访问修饰符 父类名,… {
};
重载是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和实现不相同。
同一个作用域中,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。
class class_name{
public:
type func_name(type val){
}
type func_name(type val){
}
}
class class_name{
public:
type operator+(type val);
多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。
在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。
class class_name{
public:
virtual type func_name(); // =0,就表示是纯虚函数
}
class class_name{
public:
virtual type func_name() = 0; // =0,就表示是纯虚函数
}