类与对象是C++语言的一个特点,类是对象的抽象,对象是类的实例。

类是抽象的需要占用内存,而对象时实例化的占用内存。

下面举个例子:

class Time  //定义类
{int hour;   //定义数据成员int min;    //定义数据成员int sec;    //定义数据成员
};
Time t;

看着这个结构是不是有点眼熟呢,跟C语言中学过的struct的应用很类似,但是两者之间还是有区别的:在struct中若没有特别声明,结构体的成员都是public公有成员;而class默认是private私有成员。

类中出了数据成员之外一般还有它的成员函数,说到成员函数我们最先想到的是构造函数,构造函数的存在就是为了让我们初始化对象(当然也可以cout<<一些语句,方便我们调试)。

说到初始化,之前在C语言中我们见过的初始化是这样的:

int i = 0;

但是如果在C++里这样初始化对象,那就是万万不行的啦

class Time
{hour = 0;   //错误的初始化min = 0;     //错误的初始化sec = 0;     //错误的初始化
};

所以一定要运用我们刚才提到的构造函数。

构造函数的函数名与类名相同,这是必须的,必须的,必须的(重要的事情说三遍),它没有返回值,也没有任何类型,它的功能是用户自己定义的,但是却不能被用户显式调用,如果用户自己没有定义构造函数,那么编译器会自动生成一个构造函数,但生成的这个构造函数并没有实际的作用,它的函数体是空的。

class Time  //定义类
{
public:Time()   //定义构造函数,函数名与类名相同{hour = 0;   //利用构造函数来对数据成员进行初始化min = 0;    //利用构造函数来对数据成员进行初始化sec = 0;    //利用构造函数来对数据成员进行初始化}void Set_Time(void);  //函数声明void Show_Time(void); // 函数声明private:int hour;   //定义数据成员int min;    //定义数据成员int sec;    //定义数据成员
};
void Time:: Set_Time(void)  //定义成员函数的定义,设置时间
{cin >> hour;cin >> min;cin >> sec;
}
void Time::Show_Time(void)// 成员函数的定义,显示时间
{cout << hour << ":" << min << ":" << sec << endl;
}
Time t;     //定义类的对象

构造函数的定义除了上述例子中的那样无参的构造函数之外,还有带有参数的构造函数,它的一般格式为:

构造函数名(类型名1,形参1,类型2,形参2 ...)

上面的例子可改写为

Time(int, int, int); //有参数的构造函数
//在类外定义构造函数
Time::Time(int h, int m, int s)
{hour = h;min = m;sec = s;
}

C++还提供了另外一种初始化数据的方法,那就是参数化表,上面例子的初始化也可以写成这样:

Time::Time(int h, int m, int s):hour(h), min  (m), sec (s){}

与构造函数相对应的就是析构函数了,析构函数的作用是在撤销对象占用的内存之前完成一些清理工作,但并不是删除对象。它的用法是在类名前面加一个取反符号“~”,函数中的内容可为空。

上面例子的析构函数可写为

    ~Time(){cout << "~Time()" << endl;}

一个类可以有多个构造函数,但是只能有一个析构函数。

调用构造函数和析构函数的顺序相当于一个栈,先构造的后析构,后构造的先析构。

转载于:https://blog.51cto.com/originalbyinn/1766735

C++之浅谈类与对象相关推荐

  1. 浅谈python的对象的三大特性之封装

    我们家里都有电视机,从开机,浏览节目,换台到关机,我们不需要知道电视机里面的具体细节,只需要在用的时候按下遥控器就可以完成操作,这就是功能的封装. 在用支付宝进行付款的时候,只需要在用的时候把二唯码给 ...

  2. 浅谈ThingJs之对象查询方法

    在开发中,引入了场景,添加了对象,那我们如何尽快的找到对象呢? 方法如下: 1.在父类/子类树上,通过parent.children属性找到要控制的对象 2.在分类对象属性树上,通过类身上分类属性找到 ...

  3. 浅谈将子类对象赋值给父类对象

    最近对将子类对象赋值给父类对象有点心得,想和大家分享一下,但本人水平有限,请各位指正和批评.言归正传,下面是几个小例子,请大家看一看. 测试一 父类: public class Supclass {p ...

  4. ext 浅谈类的实例

     打开ext的API,如下 找到Class这个选项 将鼠标移到config那里可以看到有以下属性:  好了,让我们开始进入主题:     首先,来讲讲如何自定义一个类,在ext中,创建一个类其实与其他 ...

  5. 浅谈Deferred(延迟对象)

    Deferred 定义 使用场景 例子 定义 Deferred跟ES6中的Promise的套路是差不多的,不过Deferred是JQuery中的函数,我们先来看一下Deferred的一些介绍吧. $. ...

  6. 浅谈阿里云对象存储OSS

    OSS(即Object Storage Service)是一种提供海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本,官方一点 ...

  7. 深入浅出理解类和对象

    阅读本文你将: 掌握类的定义方式以及对象的实例化 掌握类中的成员变量和方法的使用 掌握对象的整个初始化过程 全文目录 类和对象 1.类和对象的初步认识 2.类和类的实例化 3.类的成员 3.1字段/属 ...

  8. 浅谈C++类与对象(一)

    文章目录 一.面向对象 二.结构体与类 三.什么是类 3.1 定义 3.2 构成 3.3 类的定义方式(两种) 四.类的访问限定符及封装 4.1 访问限定符 4.2 封装 五.类的作用域 六.类的实例 ...

  9. 浅谈Perl的类、包、模块与面对对象编程

    http://blog.chinaunix.net/uid-27464093-id-3308003.html Perl面向对象Perl面向对象学习例子实例代码教程 - 在我们了解perl的面向对象的概 ...

最新文章

  1. 精通python设计模式-浅谈Python设计模式 - 原型模式
  2. linux服务之drbd
  3. Node.js小白开路(一)-- fs篇
  4. uniGUI 实操感受
  5. 【论文解读】Knowledge Review:知识蒸馏新解法
  6. hdu1466(dp)
  7. ThreadPoolExecutor源码学习(2)-- 在thrift中的应用
  8. spark启动的worker节点是localhost_Spark大数据在线培训:Spark运行原理解析
  9. 输入输出重定向和管道
  10. OSITCP/IP参考模型
  11. Unity3D倒计时两种方法
  12. 产品经理必看书籍推荐
  13. 京瓷300i_kyocera cs 300i kx驱动下载
  14. 平面设计素材:15000套高端平面logo,免费赠送给所有平面设计师...
  15. 那些年我们错过的大话西游!!!
  16. 【线性代数笔记】正定矩阵及其性质
  17. python问卷星 自动答题_问卷星自动答题神器
  18. 数电出题??自启动问题
  19. 无忧·企业文档自助配置完成单点登录配置,对接企业原有组织架构
  20. 同一局域网下,手机能连上wifi,电脑连不上

热门文章

  1. flask入门2-模板引擎
  2. kindeditor自定义插件插入视频代码
  3. Redisbook学习笔记(3)数据类型之列表
  4. 采用HTML5之“data
  5. LeetCode -- 推断链表中是否有环
  6. NSCache实现内存缓存
  7. openid4java 使用记录[转载]
  8. 路由器启用SNMP服务
  9. 计算机高级技师论文网,高级技师论文(数控铣床、加工中心).doc
  10. insert into 插入空值_常州插入式涡轮流量计旋进旋涡流量计价格-玮偌自控系统...