本文章主要学习c++类与对象的基本概念。根据视频学习
MOOC第八章内容
抽象是为了对具体问题进行概括,提炼出这一类对象的公共性质并加以描述的过程:
抽象有数据抽象和行为抽象
数据抽象:描述某类对象的属性和状态
行为抽象:描述某类对象的行为或具有的功能
抽象由封装实现,在C++中,由类实现封装
类的定义:
class ClassName
{
数据成员;(表达数据抽象)
函数成员;(表达行为抽象)
}
类内:在类声明之内。
类外:在类声明之外。
为什么使用访问控制符:封装目的是使信息隐蔽,所以不是所有信息都对外可见。
访问控制符有:
public:
公有成员;(类与外部的接口,类内和类外函数都可以访问)
private:
私有成员;(只允许类内函数访问)
protect:
保护成员;(跟私有成员一样)
易错点:类对象属于类外,所以不可以访问私有数据成员和函数,只能访问公有成员。
类的实现:
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;
}
};
类的使用:
类是一种数据成员,类的变量称作类的实例,或对象
定义对象的方式:类名 对象名;
访问类成员的方法:
通过对象访问类成员:
通过指针访问类成员:
int main()
{
ClocK clock_1, clock_2;
clock_1.SetTime(9, 5, 25);
clock_2.SetTime(15, 25, 32);
clock_1.ShowTime();
clock_2.ShowTime();
return 0;
}
ClocK C1(5, 14, 12);
Clock& Cr = C1;
Cr.ShowTime();
解决数据成员自动初始化问题
例如:时钟类的构造函数
ClocK(int h, int m, int s) {
Hour = h; Minute = m; Second = s;
}
ClocK(int h, int m, int s):Hour(h),Minute(m),Second(s){}
重载构造函数与缺省构造函数
专门用于处理对象销毁——析构函数
#include
using namespace std;
class CString
{
private:
int len;
char* buf;
public:
CString(int n);
~CString();
void copy(char* src);
};
CString::CString(int n)
{
len = n;
buf = new char[n];
}
void CString::copy(char* src)
{
strcpy(buf, src);
}
CString::~CString()
{
delete []buf;
}
void func()
{
CString obj(64);
obj.copy("helloword");
}
int main()
{
func();
return 0;
}
该类中创建析构函数是为了清理类对象所指的字符空间。
目的:构造一模一样的类对象
定义:将自己同类对象的引用作为参数进行构造函数的初始化时,该构造函数为拷贝构造函数。
特点:
按例:
#include
using namespace std;
class Point
{
private:
float x, y;
public:
Point(float a, float b)
{
x = a; y = b;
}
//拷贝构造函数的构建
Point(Point& obj)
{
x = obj.x;
y = obj.y;
}
void Print() { cout << x << endl; }
};
int main()
{
Point obj1(5, 15);//调用普通构造函数
Point obj2(obj1);//调用拷贝构造函数
Point obj3 = obj1;//调用拷贝构造函数
obj1.Print();
obj2.Print();
obj3.Print();
return 0;
}
类类型做函数参数的三种方式:
数组的初始化:调用构造函数进行初始化
关键字:static
分类:
静态数据成员:在类内进行定义,在类外进行初始化
特点是属于类,不属于类对象,只有一个空间。在类外访问需使用类作用域符::。类对象不存在时,也可以访问。
静态成员函数:也属于类,没有this指针。
关键字:const
关键词:friend
定义:一个类对象作为另一个类的成员,成员对象为子对象,用初始化列表方式初始子对象