C++在C语言的基础上增加了面对对象的编程,C++支持面向对象程序设计;
类是C++的核心特性,用于指定对象的形式,类中的数据和方法称为类的成员。
1. C++类的定义
类定义是以关键字class开头,后跟类的名称,类的主体在花括号里
2. 类成员的访问
数据封装是面向对象编程的一个重要特点,它防止函数直接访问类的内部成员,类的访问修饰符有public、private、protected三种,
一个类可以有多个相同的类访问修饰符,成员和类的默认访问修饰符为private
class classname{ public: // 公有成员 protected: // 受保护成员 private: // 私有成员 };
- 公有成员public:在类的外部可以直接访问,不需要使用任何成员函数来设置或者获取共有变量的值
- 私有成员pravite:私有成员变量或函数在类的外部是不可访问的,甚至不可查看,只有类本身和友元函数可以访问私有成员
- 受保护成员protected:受保护成员变量或函数与私有成员相似,但受保护成员在子类中是可以访问的
#include<iostream> using spacename std; class baseClass { // 公有成员 public: string pub = "public"; char getc(); // 私有成员,只能通过类内的函数进行访问 private: string pri = "private"; // 受保护成员,在子类中可以访问 protected: string pro = "protected"; }; // 继承base类的子类,继承用 : class sonClass : baseClass { public: char getPro(); // 先声明,再在外部定义,比较规范 }; char baseClass :: getc() { return getPro[3]; } char sonClass :: getPro() { return pri[3]; } int main(){ baseClass bc; sonClass sc; cout << bc.pub << endl; // 输出为 public cout << bc.getc()<<endl; // 输出为 v cout << sc.getPro(); // 输出为t return -1; }
3. C++中类的继承
有public、protected、private三种继承方式,不同在于改变了基类成员的访问属性
- public继承:基类中的public、protected、private成员访问属性在派生类别中分别变成public、protected、private
- protected继承:基类中的public、protected、private成员访问属性在派生类别中分别变成protected、protected、private
- private继承:基类中的public、protected、private成员访问属性在派生类别中分别变成private、private、private
C++中类的继承默认为private继承,struct中默认为public继承
4. 类的构造函数 & 析构函数
构造函数是类的一种特殊的成员函数,会在每次创建类的时候自动执行,其名称与类的名称完全相同,且不会返回任何类型,构造函数可以为某些成员变量进行初始值设置。
构造函数一般声明为公有的public,因为创建对象一般是在类的外部进行的;如果声明为private或protected,那么只能在类内部进行实例化,不是通常做法。
class baseClass{ public: baseClass(int aa, double bb); // 构造函数的函数名与类的名称相同 int geta(); private: int a; double b; }
// 构造函数无返回值,故不需要关键字 baseClass::baseClass(int aa, double bb){ a = aa; b = bb; } int baseClass::geta(){ return a; } int main(){ baseClass myclass(1, 2.2); cout << myclass.geta(); // 返回的是1 return 0; }
还可以使用初始化列表来初始化字段
baseClass::baseClass(int aa, double bb): a(aa), b(bb) { .... } // 上述方法等同于 baseClass::baseClass(int aa, double bb) { a = aa; b = bb; }
析构函数是类的一种特殊成员函数,会在每次删除所创建的对象时执行;
析构函数的名称为 ~ + 类的名称,不会返回任何值,也不带任何参数,析构函数有助于在跳出程序(关闭文件、释放内存等)前释放资源。
标签:对象,成员,private,访问,protected,C++,baseClass,public From: https://www.cnblogs.com/Liang-ml/p/16795836.html