类,对象,封装,构造函数,析构函数
来源:互联网 发布:招在家工作淘宝客服 编辑:程序博客网 时间:2024/06/06 15:42
c++面向对象中,算法与数据结构被捆绑成一个类
对象:算法+数据结构
程序:对象+对象+.....
什么是类: 类是定义同一类所有对象的变量和方法的蓝图或原型
类是对象的抽象,而对象是类的具体实例
类是抽象的,不占内存,而对象是具体的,占内存空间,类与对象的关系好比动物与猴子的关系。
类的封装性,用来保护内部成员,外部要访问需要类定义的访问接口来进行。
在类中定义成员函数:
类中定义的成员函数一般为内联函数,即使没有明确inline标识
c++中,类定义通常在头文件中,因此这些成员函数定义也伴随着进入头文件
在类之后定义成员函数:
c++允许在其他地方定义成员函数
将类定义和其他成员函数定义分开,是目前开发程序的通常做法
我们把类定义(头文件)看成是累的外部接口,累的成员函数定义看成是类的内部实现
例如:
#include<iostream>using namespace std;class Date{ private: //可不写,默认为privateint 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 0Date::void set(int x,int y int z){ year=x; month=y; day=z;}#endifint 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++就仅仅创建对象而不做任何初始化
类的对象的初始化只能由类的成员函数来进行
建立对象的同时,自动调用构造函数
类对象的定义涉及到一个类名和一个对象名
由于类的唯一性和对象的多样性,用类名而不是对象名来作为构造函数名是比较合适的 (类名=构造函数名)
构造函数没有返回值
对象的撤销:
析构函数完成对象的撤销
也是类的成员函数
其作用是善后处理
析构函数名,就在构造函数前加上一个一个逻辑非运算‘~’,表示逆构造函数。
- 类,对象,封装,构造函数,析构函数
- 类和对象、构造析构函数
- 1.面向对象的封装,构造函数!
- 面向对象 之封装、构造函数
- 面向对象-封装_构造函数
- 面向对象:封装,构造函数,静态变量
- 封装性 匿名对象 构造函数
- 对象、构造函数、析构函数
- 类与对象:构造函数和析构函数
- 十四、类与对象:构造函数和析构函数
- 类的构造函数,析构函数,动态生成对象
- 对象,类,友元,构造函数,析构函数
- 面向对象( 5 )上(匿名对象 封装 构造函数 this)
- 【c#】面向对象简介(构造、析构函数,静态构造函数、静态类)
- 面向对象概述、类与对象、封装、构造函数、this关键字
- 类与对象、构造与析构函数
- 【面向对象】php新手之学习类与对象-构造函数与析构函数
- 封装(3.构造和析构函数)
- hdoj-1724 Ellipse(自适应Simpson积分)
- android捕获全局异常
- Path、 贝塞尔曲线、 Bitmap、 Xfermode、 OnTouchEvent
- 微信公众号平台开发 新增永久视频素材
- Yoshua Bengio等大神传授:26条深度学习经验
- 类,对象,封装,构造函数,析构函数
- test4.3
- 二维码在物流领域的应用研究
- java读取excel中的多图片
- Java解析XML之dom_sax方式
- jsp内置对象
- servlet2
- NOIP2014 Day1 T1
- Layouts 之 LinearLayout