一、面向对象的介绍
C++是面向对象的语言,一件事通过多个对象之间交互完成。对象可以是任何事物,可以是人、可以是物。像:人洗衣服,人将衣服放入洗衣机,倒入洗衣粉,启动洗衣机,洗衣机就会完成洗衣服的操作。我们并不需关心洗衣机集体是怎么洗衣服的。
C++中用类 来描述对象。 对于初学者,可以把类看作是一个仓库,你需要什么就从仓库里拿什么。
二、类的定义
我们也可以定义C语言的struct结构体,不过struct会被升级成为类。
cpp
class 自定义的类名
{
//类的成员
};//末尾有分号
如:
class Date
{
int a;
};
#类内定义
类的成员可以全在类中定义,类中的所有成员都可以无限制的访问彼此。
cpp
class Date
{
public:
int geta()
{
return a;
}
private:
int a;
int b;
};
#类外定义
我们可以让类成员函数在类中声明,在类外定义。不过在类外的函数在成员名前加 -> 类名::。
以此确定该函数属于哪个类。
cpp
class Date
{
public:
int geta();
private:
int a;
int b;
};
int Date::geta()
{
return a;
}
这也说明了,类的成员函数可以份文件编写。将声明放在.h中,定义放在.cpp中。
三、类的访问权限
类有三种访问限定符。分别是:public(公开)、private(私有)、protected(保护)
public修饰的的成员可以被外界直接访问。
private和protect修饰的成员不能被外界直接访问。(两者在这里的功能是类似的)
作用范围:从一个限定符开始,到下一个访问限定符结束(或类结束)。
不写限定符:class默认private,struct默认public。
四、类域
每个类都有自己的作用域,每个成员都在自己对应的类域中。
在类外定义类的成员,需要用**::作用域操作符**指明成员在那个类。
cpp
class Date
{
public:
int geta();
private:
int a;
int b;
};
int Date::geta()
{
return a;
}
五、类的实例化
类在实例化对象之前,并没有实际的空间,类实例化的对象才有真正分配的物理空间。
实例化操作:
cpp
class Date
{
public:
int geta();
private:
int a;
int b;
};
int Date::geta()
{
return a;
}
int main() {
Date day;//对象实例化
day.geta();//使用 . 调用实例化对象的成员
}
六、this指针
每一个对象都有一个隐藏的this指针指向它自己。
this指针无法被修改、创建、赋值。
this指针只能在类内使用。
this指针是成员函数的第一个参数,只不过它被隐藏了。
cpp
class Date
{
public:
int geta();
int Adda(int a)
{
this->a = a;//被this指针指向的是类的成员
}
private:
int a;//this指针指向它
int b;
};