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
原文地址:https://blog.csdn.net/qq_42279379/article/details/140541588
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!