C++学习(3)——拷贝构造函数以及对象的使用(this指针)

目录

拷贝(复制)构造函数

this指针

static(静态)数据成员

普通对象数组和指针对象数组


拷贝(复制)构造函数

1、写法

        类名::类名(类名  &形参名)

2、什么时候会调用

        类对象作为函数形参的时候,调用该函数的时候会自动调用拷贝(复制)构造函数

3、什么时候不会调用

        函数形参是普通的类型不是类类型、函数形参是类对象的引用、函数形参是类类型的指针

4、分类

浅拷贝*

        数据成员没有指针类型,可以不用写拷贝构造函数,走系统默认的拷贝构造函数。系统默认的拷贝构造函数一定是浅拷贝

深拷贝*

        数据类型有指针类型,自己再写个拷贝构造函数,并且要给指针开新空间,否则可能会出错。

5、其他

        最好用引用作为函数形参,就不会调用拷贝构造函数,以及析构函数,可以避免函数被多次调用,影响效率

eg:

this指针

        类的成员函数是类创建的所有对象所共享的,为了区分,类函数用到自己的数据成员用this->成员名。可以解决成员函数的形参和类的数据成员重名问题。

例:

static(静态)数据成员

1、静态数据成员定义格式

        static+数据类型+成员名;

2、静态数据成员初始化

        类的静态数据成员在类外初始化,格式为:数据类型+类名+::(域运算符)+成员名=某个值

例如:(int Frog::count=0;

3、访问格式

        任意该类的对象名+.+静态变量名 或者 类名+::+静态变量名

4、作用

        可以解决类的数据共享问题,因此把静态的数据成员放在public

5、需要注意的地方

  1. 类的静态数据成员只属于某个类,不属于对象,对象只是有访问权限
  2. 静态成员函数没有this指针,并且只能访问类的静态成员
  3. 不创建对象也有静态成员(可调用) 用 类名+::+静态变量名 访问

错误示例

正确示例

普通对象数组和指针对象数组

对象数组

        和普通数组一样,数组名也是地址,只是存的是类类型的对象。 访问用 数组名[索引].成员 的方式。

指针对象数组

        存放的是每个对象的地址,初始化要用new开空间。访问用 数组名[索引]->成员 的方式。

const对象

如果把一个对象指定为const,就是告诉编译器不要修改它。

const对象的定义:const 类名 对象名(参数);

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

似末

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值