C++:类的概述、类的访问权限、以及友元的介绍

1、类的概述

(1)What(什么是类)

本质是一个数据结构 = 变量 + 函数

(2)Why(类的作用)

类是面向对象变成的核心概念,它提供了一种组织和管理代码的方式,便于实现对世界的抽象和建模

(3)类的初始化

类是通过构造函数形成对象进行初始化的

(4)类的组成

A.成员变量

类的静态成员变量

静态成员和类相关联,不和对象相关联。由关键字static修饰的成员变量

类的一般成员变量

一般成员属于对象,和对象相关联

类的可变成员变量

永远不可能是 const,即使它是 const 类对象的成员变量,因此一个 const 成员函数可以改变可变数据成员。它是由关键字修饰 mutable修饰的成员变量

B.成员函数

const成员函数

这种类型的成员函数不能改变类对象的数据,只能访问类对象

成员函数的重载

同一作用域内,定义了两个或以上函数名相同,但函数的参数列表不同的函数

多态与重载的区别

  • 定义:重载-多个相同的函数名,但参数列表和返回值类型存在着不同;多态-基类 对需要重写的函数进行 virtual 修饰,派生类重写 virtual 函数
  • 绑定时机:重载是一种静态绑定-根据传入的参数类型和数量在编译时进行抉择;多 态是一种动态绑定-根据对象的类型在运行时进行抉择

注意:在类内部定义的成员函数自动是inline模式,也可以显式地指定成员函数为inline

2、类成员的访问权限

  • public:公有成员在类内部、类的对象和类的派生类中都是可访问的
  • protected:保护成员在类内部和派生类中都是可访问的,但类的对象不可访问
  • private:私有成员只在类内部可访问,对于类的对象和派生类不可访问
权限关键字类内部能否访问派生类能否访问外部能否访问
public可以访问可以访问可以访问
protected可以访问可以访问不可以访问
private可以访问不可以访问不可以访问

3、友元

(1)What(什么是友元)

在C++中,被关键字friend修饰的类成员方法(或类对象),被称为友元函数(或友元类)

(2)Which & How(有哪些友元,如何使用友元)

  • 友元函数
class A{
private:
	int iCount;
public:
	friend int getCount(const A &a);
}
int getCount(const A &a)
{
	return a.iCount; //友元函数可以直接访问对应类的私有成员(变量和方法)
}
  • 友元类
class BB; //仅作声明,避免AA类中在传参的时候报错
class AA {
private:
	int iCount;
public:
	AA(int iCount_) :iCount(iCount_) {}
	friend int getCount(const AA& a) {
		return a.iCount;
	}
	int getBBTimes(BB& BObj);
};
class BB {
private:
	int iTimes;
public:
	friend class AA;
	BB(int iTimes_) :iTimes(iTimes_) {}

};
int AA::getBBTimes(BB& BObj)
{
	return BObj.iTimes;
}
void main()
{
	AA aObj(100);
	int iVal = getCount(aObj);
	std::cout << iVal << std::endl;
	BB bObj(1);
	int iTimes = aObj.getBBTimes(bObj);
	std::cout << iTimes << std::endl;
}

(3)Why(友元的作用)

  • 访问私有成员:友元的主要作用是允许其他类或函数访问当前类的私有成员
  • 增强类的交互:友元关系可以增强不同类之间的交互能力
  • 降低代码依赖性提高封装性:通过将某个类或函数声明为友元,可以减少对外界暴露的接口

================================================================================

C++知识点总结全系列文章索引:
【C++知识点总结全系列 (01)】:数据类型、数据类型转换和变量
【C++知识点总结全系列 (02)】:C++中的语句、运算符和表达式详细总结
【C++知识点总结全系列 (03)】:函数(函数参数传递、可变参数、函数返回值等详细介绍)
【C++知识点总结全系列 (04)】:C++类的详细总结与分析
【C++知识点总结全系列 (05)】:IO 类的详细总结和分析
【C++知识点总结全系列 (06)】:STL六大组件详细总结与分析- 配置器、容器、迭代器、适配器、算法和仿函数

【C++知识点总结全系列 (07)】:模板与泛型编程详细总结与分析
【C++知识点总结全系列 (08)】:面向对象编程OOP

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值