文章目录
- 七、类与对象基本概念
- 抽象
- 定义与声明
- 访问控制
- 类的实现与使用
- 对象指针、this指针与对象引用
- 构造函数
- 析构函数
- 拷贝构造函数
七、类与对象基本概念
抽象
抽象是相对,而非绝对的
·在研究问题时,侧重点不同,可能会产生不同的抽象结果;解决同一问题时要求不同,也会产生不同的抽象结果。
-如果开发一个人事管理软件,那么关心的是员工的姓名、性别、工龄、工资、工作部门等相关信息。
-如果开发学籍管理软件,那么关心的是学生的姓名、性别、年龄、籍贯、所在学院等相关信息。
定义与声明
访问控制
类成员的访问控制
-
什么是“类内”和“类外”
在类声明之内称为类内
在类声明之外称为类外 -
数据封装的目的就是信息隐蔽。为了达到信息隐蔽,在C++类中,并非所有的成员都是对外可见的(或者说,是类外可以访问的)。
-
通过设置成员的访问控制属性来实现对类成员的访问控制。这些控制属性有: public、protected、private
类的实现与使用
实现一个类,就是按照所设定的功能语义去实现类中的每一个成员函数。
class Clock{
private:
int hour,minute,second;
public:
void setTime(int h,int m,int s){
hour = h;
minute = m;
second = s;
}
void ShowTime(){
cout<<"Current Time:";
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
};
在类内实现成员函数,编译器按内联函数处理。
或者在类外实现成员函数
class Clock{
private:
int hour,minute,second;
public:
void setTime(int h,int m,int s);
void ShowTime();
};
void Clock::setTime(int h,int m,int s){
hour = h;
minute = m;
second = s;
}
void Clock::ShowTime(){
cout<<"Current Time:";
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
在C++中,类成员函数可以在类定义内部实现,也可以在类定义外部实现。在类内实现成员函数通常是内联函数,而在类外实现需要在类的头文件中声明函数,并在一个源文件中定义这些函数。
#include <iostream>
using namespace std;
class Clock{
private:
int hour,minute,second;
public:
void setTime(int h,int m,int s);
void addHour(int h);
void addMinute(int m);
void addSecond(int s);
void ShowTime();
};
void Clock::setTime(int h,int m,int s){
hour = h;
minute = m;
second = s;
}
void Clock::addHour(int h){
hour += h;
}
void Clock::addMinute(int m){
minute += m;
}
void Clock::addSecond(int s){
second += s;
}
void Clock::ShowTime(){
cout<<"Current Time:";
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
int main()
{
Clock clock_1,clock_2;
clock_1.setTime(9,5,25);
clock_2.setTime(15,16,45);
clock_1.addHour(3);
clock_2.addMinute(8);
clock_1.ShowTime();
clock_2.ShowTime();
return 0;
}
注意:每个对象各自包含了类中定义的各个数据成员的存储空间,但它们共享类中定义的成员函数。
总结:定义和使用类类型的过程
·抽象∶对事物进行抽象
·声明类:根据抽象的结果定义类的特性
·实现类:实现类中成员函数的逻辑
·使用类∶在程序中定义类的实例,使用类的公有成员。
在使用的过程中,有需要注意的地方
都不行!!!
对象指针、this指针与对象引用
构造函数
函数名和类名相同,没有返回类型,可以有参数。
当创建类的一个新对象时,构造函数被自动调用,完成对象的初始化工作。
析构函数
拷贝构造函数
后面章节陆续更新,点赞越多更新越快,欢迎各位的关注~
专栏合集:
【C/C++】C语言程序设计基础知识(数据类型与表达式、控制语句、数组与结构)
【C/C++】C语言程序设计基础知识(指针、函数)
【C/C++】C++程序设计基础(输入输出、数据类型、动态内存、函数重载、内联函数、常量、引用)
声明:仅供学习参考使用,不另做他用,侵删