类,对象,封装,构造函数,析构函数

c++面向对象中,算法与数据结构被捆绑成一个类

对象:算法+数据结构

程序:对象+对象+.....

什么是类: 类是定义同一类所有对象的变量和方法的蓝图或原型

类是对象的抽象,而对象是类的具体实例

类是抽象的,不占内存,而对象是具体的,占内存空间,类与对象的关系好比动物与猴子的关系。

类的封装性,用来保护内部成员,外部要访问需要类定义的访问接口来进行。

在类中定义成员函数:

类中定义的成员函数一般为内联函数,即使没有明确inline标识

c++中,类定义通常在头文件中,因此这些成员函数定义也伴随着进入头文件

在类之后定义成员函数:

c++允许在其他地方定义成员函数

将类定义和其他成员函数定义分开,是目前开发程序的通常做法

我们把类定义(头文件)看成是累的外部接口,累的成员函数定义看成是类的内部实现

例如:

#include<iostream>
using namespace std;
class Date
{
    private:         //可不写,默认为private
	int year;
	int month;
	int day;
    public:
	Date(){year=2015;month=9;day=17; }     <span style="color:#ff0000;">//构造函数的重载,两种不同的赋值方法</span>
	Date(int x,int y):year(x),month(y),day(15){}
	Date(int x,int y,int z):year(x),month(y),day(z){}
	~Date(){}                           <span style="color:#ff0000;">//析构函数</span>
	void set(int x,int y,int z);       <span style="color:#ff0000;">//在类外进行函数定义</span>
	void show()
	{
	    cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
	}
};
void Date::set(int x,int y,int z)      <span style="color:#ff0000;">//外部定义类函数的两种书写方法</span>
{
    this->year=x;
    this->month=y;
    this->day=z;
}
#if 0
Date::void set(int x,int y int z)
{
    year=x;
    month=y;
    day=z;
}
#endif
int main()
{
    Date date1;                <span style="color:#ff0000;">//三种不同的构造函数</span>
    Date date2(2012,3);
    Date date3(2008,8,18);
    date1.show();<span style="white-space:pre">		</span><span style="color:#ff0000;">//类显示接口</span>
    date2.show();
    date3.show();
    date3.set(2017,8,20);      <span style="color:#ff0000;">//调用类外部设置接口</span>
    date3.show();
    return 0;


}
skywalker@skywalker:~/work/test$ ./a.out 
2015年9月17日
2012年3月15日
2008年8月18日
2017年8月20日
保护成员:protected:

除了友元函数和子类的成员函数外,从类的外部就不能对它们进行访问

私有成员:private:

从累的外部就不能对其进行访问

公共成员:public:

公共成员在任何地方都可以被访问


封装的概念:

类的封装的概念首先是,数据与算法结合,构成一个不可分割的整体(对象);

其次是,在这个整体中一些成员是被保护的,它们被有效的屏蔽,以防外界的干扰和误操作;

另一些成员是公共的,它们作为接口提供外界使用,而该对象的描述即是创建用户定义的类型,对c++来说,就是类的实现机制。

封装优点:

1:重用;

2:不必关心具体的实现;

3:具有安全性。

构造函数和析构函数:

构造和析构函数,使得类对象能轻灵的创建和撤销

构造函数创建类对象,析构函数撤销类对象

构造和析构函数是类的特殊成员函数

对象的初始化:

建立对象,须有一个有意义的初始值

c++建立和初始化对象的过程专门由该类的构造函数来完成

构造函数给对象分配空间和初始化

如果一个类没有专门的构造函数,那么c++就仅仅创建对象而不做任何初始化

类的对象的初始化只能由类的成员函数来进行

建立对象的同时,自动调用构造函数

类对象的定义涉及到一个类名和一个对象名

由于类的唯一性和对象的多样性,用类名而不是对象名来作为构造函数名是比较合适的  (类名=构造函数名)

构造函数没有返回值 

对象的撤销:

析构函数完成对象的撤销

也是类的成员函数

其作用是善后处理

析构函数名,就在构造函数前加上一个一个逻辑非运算‘~’,表示逆构造函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值