C++之浅谈类与对象
来源:互联网 发布:软件测试原则包括 编辑:程序博客网 时间:2024/05/17 00:15
类与对象是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;}
一个类可以有多个构造函数,但是只能有一个析构函数。
调用构造函数和析构函数的顺序相当于一个栈,先构造的后析构,后构造的先析构。
本文出自 “Original_By_Inn” 博客,转载请与作者联系!
- **浅谈Objective-C中的类与对象**
- C++之浅谈类与对象
- 浅谈类与对象
- 浅谈PHP类与对象
- 1.类与对象之objective-c
- 1.类与对象之objective-c
- 浅谈Ios开发之Objektiv-C基础面向对象
- C++-类与对象
- C++:类与对象
- C++(类与对象)
- 【c++】类与对象
- C++-类与对象
- 【学习ios之路:Objective-C】类与对象
- Objective-C浅谈面向对象
- Objective-C面向对象浅谈
- c与面象对象之继承
- Object-C之对象创建与使用
- 浅谈Java之面向对象
- 内存泄漏之thread浅析
- 编程成长日记——有意思的编程题(一)
- 编程成长日记——有意思的编程题(二)
- 编程成长日记——杨辉三角
- Docker Rest(Remote) API
- C++之浅谈类与对象
- AndroidStudio 依赖 ButterKnife 出现的空指针异常
- 数据结构之用栈实现逆波兰表达式
- iOS 环信集成方法之集成环信SDK
- DOCKER 容器CPU 配额控制
- Linux系统(X64)安装Oracle11g完整安装图文教程另附基本操作
- android关机流程-framework部分
- 第97课:Spark Streaming在线动态计算特定时间窗口下热门商品排名
- 2016百度春季笔试