文章目录
🍎1. 面向对象程序设计
- 对象:每一个对象都由数据和函数(操作代码)组成
- 封装 & 信息隐蔽:将有关数据和代码封装在一个对象中即为封装,将对象中某些部分对外隐蔽即为信息隐蔽
- 抽象:类是对象的抽象,对象是类的具体表现形式
- 继承 & 重用:在一个已有类的基础上建立一个新的类即为继承,继承用了已有类中的代码即为代码重用
- 多态:由继承而产生的相关的不同的类,其对象对同一消息会做出不同的响应
🍎2. 类的声明 & 对象的定义
🍇2.1 类的声明
class 类名
{
public:
……
private:
……
protected:
……
};
- public:公有成员访问限定符,谁都能访问,
- private:私有成员访问限定符,只有本类内可访问
- protected:保护成员访问限定符,只有本类 & 继承于本类的类可访问
🍇2.2 对象的定义
-
先声明类,再定义对象(s表示可同时定义多个对象)
class 类名 { public: …… private: …… protected: …… }; 类名 对象s;
-
声明类的同时定义对象
class 类名 { public: …… private: …… protected: …… }对象s;
-
不出现类名,直接定义对象不常用
class { public: …… private: …… protected: …… }对象s;
🍇2.3 类和结构体类型的异同
- 用struct声明的类,如果对其成员不作private或public的声明,系统将其默认为public(公有的)
- 用class声明的类,如果对其成员不作private或public的声明,系统将其默认为private(私有的)
🍎3. 类的成员函数
-
类外定义成员函数
class Time { public: void set(); private: int hour,minute,sec; }; void Time::set() { cin >> hour >> minute >> sec; } Time t1;
-
一个对象所占的空间大小只取决于该对象中数据成员所占的空间,而与成员函数无关。函数代码是存储在对象空间之外的。
🍎4. 对象成员的引用
🍇4.1 通过对象名和成员运算符访问
class Time
{
public:
void set();
private:
int hour,minute,sec;
};
void Time::set()
{
cin >> hour >> minute >> sec;
}
Time t1;
int main()
{
t1.set();
return 0;
}
🍇4.2 通过指向对象的指针访问
class Time
{
public:
void set();
private:
int hour,minute,sec;
};
void Time::set()
{
cin >> hour >> minute >> sec;
}
Time t1, * p;
int main()
{
p = &t1;
p->set();
return 0;
}
🍇4.3 通过对象的引用来访问
class Time
{
public:
void set();
private:
int hour,minute,sec;
};
void Time::set()
{
cin >> hour >> minute >> sec;
}
Time t1;
Time t2 = &t1;
int main()
{
t2.set();
return 0;
}
🍎5. 习题
-
需要求三个长方柱的体积,轻便一个基于对象的程序。数据成员包括length(长)、width(宽)、height(高)。要求用成员函数实现以下功能:
- 由键盘分别输入三个长方柱的长宽高;
- 计算长方柱的体积
- 输出三个长方柱的体积
#include <iostream> using namespace std; class Rectangle { public: void input_data() { cin >> length >> width >> height; } int compute() { return length * width * height; } void print(int x) { cout << x << endl; } private: int length; int width; int height; }; int main() { Rectangle r1,r2,r3; cout << "please input r1's data" << endl; r1.input_data(); cout << "please input r2's data" << endl; r2.input_data(); cout << "please input r3's data" << endl; r3.input_data(); int area1 = r1.compute(); int area2 = r2.compute(); int area3 = r3.compute(); cout << "r1's volume : "; r1.print(area1); cout << "r2's volume : "; r2.print(area2); cout << "r3's volume : "; r3.print(area3); return 0; }
下一章:构造函数与析构函数