C++之类(二)
来源:互联网 发布:mac os sierra下载 编辑:程序博客网 时间:2024/06/04 17:52
接着上次的继续写,我们上次在类里面定义了一个set函数用来给类的数据成员赋值。其实,类本身提供了一个特殊的函数——构造函数。构造函数的函数名和类名相同,无返回值。构造函数的作用就是给类的数据成员初始化(赋值)。我们来新建一个类吧。
class MyClass{int num;char str[10];double f;MyClass(int num,char *str,double f)//构造函数{this->num = num;strcpy(&this->str,str);this->f = f;}}这里我们看到了“this指针”,这个指针指向类本身。我们构造函数的参数列表里面形式参数的名字和MyClass这个类的数据成员的名字一样。这个时候,
我们无法区分形式参数和数据成员,因此使用了this指针。这就避免了名字相同这个问题。构造函数和上次我们使用的set函数不一样。set函数需要我们去调用,而构造函数不需要程序员去调用。编译器会自动使用构造函数来初始化该类的对象。当我们没有写自己的构造函数的时候,系统会自动生成一个默认的构造函数。初始化对象的时候就会调用默认构造函数。下面我们来初始化一个类对象。
class MyClass{int num;char str[10];double f;MyClass(int num,char *str,double f)//构造函数{this->num = num;strcpy(&this->str,str);this->f = f;}void show(){cout << num << endl;cout << str << endl;cout << f << endl;}}int mian(){MyClass oj(3,"hello",3.14);//初始化对象oj.show();system("pause");return 0;}
每一个对象都有自己的作用域,当对象在超出作用域的时候会自动撤销。对象所占用的资源将被回收。因此,类有另外一个特殊的函数——析构函数。这个函数用来回收资源。析构函数在类对象被销毁时,自动调用。另外,析构函数也没有返回值。还有,它没有任何参数(包括void),因此它不能被重载,而构造函数可以被重载。析构函数的名字是在类名前面加上“~”这个符号。另外构造函数无法声明为const,volatile,static。大部分的类都不需要显式的析构函数,当然,析构函数并不仅限于用来释放资源。一般而言,析构函数可以执行任意操作,该操作是类设计者希望在该类对象的使用完毕之后执行的。
阅读全文
0 0
- C++之类(二)
- 【黑马程序员】Objective-C语言学习笔记之类(二)
- 二、runtime之类和对象(二)
- C++之类和对象(二)
- C++primer难点之类
- 【C#】C#之类
- Bugzilla之类继承体系结构及其扩展应用(二)
- Java高新技术(二)之类加载机制和反射
- Unity 学习之类和方法的分析(二)
- JAVA之类加载机制与反射(二)
- C++之类的构造与析构(二)
- Python拾遗之类属性和实例属性(二)
- 用汇编的眼光看C++(之类继承)
- 用汇编的眼光看C++(之类继承)
- 用汇编的眼光看C++(之类继承)
- Objective-C之类别(类扩展:Class Categories)
- C++PrimerPlus学习之类学习四(类继承)
- 用汇编的眼光看C++(之类继承)
- css设置透明度不影响子元素
- iOS: FFmpeg的使用一
- jzoj5167 【NOIP2017模拟6.26】下蛋爷 [ac自动机,概率递推]
- Redis之事务
- B. Valued Keys
- C++之类(二)
- Collection接口
- FastJson中@JSONField注解使用
- 线性回归 逻辑回归 树回归
- 关于天正王后续新坑 逗比大陆的开发日记
- Unity所有自带style和icon
- sqlalchemy修改openstack数据库
- Elasticsearch压力测试工具-Apache Jmeter
- mysql api编程(四) 查询