【C++】类和对象(进阶)

目录

前言

一、再谈构造函数

                 面试题:

        explicit关键字

二、静态成员变量

面试题:

三、友元

1.友元函数:

 2.友元类

四、再次理解封装

五、再次理解面向对象

总结:


前言

  • 这里会再谈到构造函数、static的用法,学习友员的用法。
  • 再次理解封装、面和对象

一、再谈构造函数

之前谈过构造函数就是用来初始化的函数,分为带参和不带参,和系统自动实现的。

之前构造函数是赋初值,一个声明的过程,但在很多时候,不能只有声明,而且要定义,所以引入初始化列表。

  • 冒号开始:成员变量  后跟一个初始值或表达式()  接着以隔开  
  • 注意每个成员变量在初始化列表种最多初始化一次
  • 引用   、const 修饰、嵌套的没有默认构造函数的类,第三类必须放在初始化列表中
  • 初始化的顺序与声明顺序有关

思考这道题目:

A、程序奔溃                   B、10 10                 C、随机值  10                 D、10  随机值  

答案:在初始化的时候,按声明的顺序,也就是先初始化a1,此时a2是随机值,所以a1初始化后就是随机值,a2初始化成10 所以是C


explicit关键字

首先介绍隐式类型转换

将对象先拷贝,在赋值给不同类型的变量

 在类中

 比如 第二行就是隐式类型转换 

如果不想出现隐式类型转换,可以在构造函数前加explicit


二、静态成员变量

对于C语言有全局变量,而在C++中,经常用static关键字修饰,使其成为全局变量

特点:

  • 修饰成员变量,一定要在类外进行初始化
  • static修饰的成员变量,属于整个类,不属于某个对象,故static修饰的变量没有this指针
  • 属于静态区
  • 静态成员可以用  类名::静态成员名   来访问

面试题:写一个类,计算程序中创建多少个类对象

解:类对象的创建来自构造函数和拷贝构造,所以在类中写静态成员变量n,每次调用构造或拷贝就让n++;

注意:由于C++讲究封装性,所以将n声明在私有中 ,避免被修改


  • 基于C++

    11

非静态成员变量,可以在声明时给缺省

三、友元

类具有封装性,在外部访问不了私有和保护的成员,但是调用友元关键字,就可以在类外部调用这些成员,但是破坏了类的封装性,所以不建议常使用

1.友元函数:

友元函数 可以 直接访问 类的 私有 成员,它是 定义在类外部 普通函数 ,不属于任何类,但需要在类的内部声 明,声明时需要加friend 关键字。
  •  友元函数调用和一般函数一样
  • 一个类可以有多个友元
  • 友元函数不能加const
  • 友元函数可以在类的任何地方声明

 2.友元类

在类中能够调用其它类的隐私或者保护

  • 可以声明在类中的任意地方
  • 友元类的关系是单向的
  • 关系不能传递

如B是A的友元,C是A的友元,不能得出B和C是友元关系


四、再次理解封装

C++面向对象,面向对象有三大特点:封装、多态、继承

封装:1.将方法与对象放在一起  2.公开、隐私和保护

举个简单的例子:

就像景区,如果不保护,那很容易遭到破坏,所以就需要人为去保护

保护也不是不让人去参观,设置合法的途径,买完票才能进入,而景区内部的人就能够在景区内自由访问


五、再次理解面向对象

面向对象就是计算机对现实世界的抽象

假设你想做一个外卖系统

面向过程关注的是底层的地点、餐品、客户的住址、客户的电话等等

而面向对象 重点关注 卖家 客户 骑手三者的关系,就是对现实世界的抽象

总结:

到这里,类和对象就算完结了

这里将了许多零零碎碎的知识点:像重载、缺省、class的声明、this指针

默认成员函数、又深入学习了面向对象

————编程没有捷径。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深度搜索

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

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

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

打赏作者

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

抵扣说明:

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

余额充值