博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++类与对象(1)——构造,复制构造函数
阅读量:5094 次
发布时间:2019-06-13

本文共 1586 字,大约阅读时间需要 5 分钟。

  1. CPP的类与对象:

当我们定义一个基本类型变量时,方法如下:

int p;        #定义一个int类型变量bool b;      #定义一个bool类型变量       float c ;      #定义一个float类型变量

 显然定义变量p适用于存储整数类型的,变量b是用于存储布尔类型的,变量c是用于存储浮点数类型的。但是变量声明的意义不只是这个,另一个同样重要的意义就是限定对变量的操作。例如:对p可以进行算术运算,比较运算等,对b可以进行逻辑运算等。这就说明每一种数据类型都包括了数据本身的属性以及对数据的操作。

  但实际上C++定义的基本类型并不能满足现实世界中各种对象的需要,于是C++提供了对自定义类型的支持,这就是类。类实际上就是用户自定义的一种数据类型,通过对现实世界的对象进行数据抽象和功能抽象,得到类的数据成员和函数成员。当定义了一个类之后,便可以定义该类型的变量,这个变量就称为累的对象(或实例),这个定义的过程也称为类的实例化。

类的函数:

构造函数:是类的一种特殊的成员函数,它会在每次类被创建时被调用。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。在程序运行中,当遇到对象声明语句时,程序会向操作系统申请一定的内存空间用于存放新建的对象。构造函数的作用就是在对象被创建的过程中利用特定的值初始化这个对象。

默认构造函数:未提供显式初始值时,用来初始化对象的构造函数。

 

拷贝构造函数/复制构造函数:拷贝构造函数是一类特殊的构造函数,是使用同一类中之前创建的对象来初始化新创建的对象。

 

通常用于:

 

    1. 当用类的一个对象去初始化该类的另一个对象时;
    2. 如果函数的形参是类的对象,调用函数时,进行形参和实参的结合是。
    3. 如果函数的返回时类的对象,函数执行完成返回调用者时。

析构函数:它用来完成对象被删除前的一些清理工作。析构函数实在对象的生存期即将结束的时刻被自动调用的。

 

示例代码:

#include
using namespace std;//Point类的定义class Point {public:    Point(){
   cout <<"调用默认构造函数"<

第一种情况示例:

int main() {    Point a(1, 2);    Point b(a);                //用对象a初始化实例b,复制构造函数被调用    Point c = a;               //用对象a初始化实例c,复制构造函数被调用    cout << b.getX() << endl;    cout << c.getX() << endl;    return 0;}

 运行结果:

第二种情况示例:

void f(Point p) {    cout << p.getX() << endl;}int main() {    Point a(1, 2);    f(a);                          //函数的形参为类的对象,当函数调用时,可以理解为用对象a初始化函数形参p,构造函数被调用。    return 0;}

运行结果:

第三种情况示例:

 

//定义一个返回值类型为Point类型的函数Point g() {    Point a(1, 2);    return a;}int main() {    Point b;          b = g();    cout << b.getX() << endl;    return 0;}

 运行结果:

转载于:https://www.cnblogs.com/wobu/p/8884817.html

你可能感兴趣的文章
【微信小程序】支付过程详解
查看>>
【bzoj2989】数列 KD-tree+旋转坐标系
查看>>
【bzoj5173】[Jsoi2014]矩形并 扫描线+二维树状数组区间修改区间查询
查看>>
(转)Android之发送短信的两种方式
查看>>
使用vue脚手架搭建项目
查看>>
Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
查看>>
网络爬虫初步:从一个入口链接开始不断抓取页面中的网址并入库
查看>>
iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
查看>>
python第九天课程:遇到了金角大王
查看>>
字符串处理
查看>>
ECharts(Enterprise Charts 商业产品图表库)初识
查看>>
LeetCode Factorial Trailing Zeroes (阶乘后缀零)
查看>>
hdu 5402 Travelling Salesman Problem (技巧,未写完)
查看>>
[AIR] 获取U盘,打开U盘
查看>>
git 常用命令
查看>>
js之事件冒泡和事件捕获详细介绍
查看>>
C# 如何实现记住密码功能
查看>>
some blogs for xna 3d game for windows phone!
查看>>
灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割
查看>>
Freemodbus 1.5
查看>>