【C++知识点总结全系列 (04)】:C++类的详细总结与分析

1、类的概述

(1)What(什么是类)

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

(2)Why(类的作用)

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

(3)类的初始化

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

(4)类的组成

A.成员变量

类的静态成员变量

静态成员和类相关联,不和对象相关联

类的一般成员变量

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

类的可变成员变量

永远不可能是 const,即使它是 const 类对象的成员变量,因此一个 const 成员函数可以改变可变数据成员

B.成员函数

const成员函数

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

成员函数的重载

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

多态与重载的区别

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

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

2、类成员的访问权限

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

3、友元

(1)What(什么是友元)

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

(2)Which(有哪些友元)

  • 友元函数
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(友元的作用)

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

4、聚合类

(1)What(什么是聚合类)

本质是一个自定义类型的数据结构(结构体或类),但聚合类有以下特性:

  • 所有的成员都是public
  • 没有任何构造函数
  • 没有基类
  • 类内部没有初始值

(2)Why(聚合类的作用)

主要目的是提供一种简单且高效的方式来组织和管理数据。它们通常用于表示简单的 数据结构,如结构体或记录类型,而不涉及复杂的行为和操作

(3)How(如何定义和使用聚合类)

struct Point{
   
	double dx;
	double dy;
};
Point pt01 = {
   1.1, 2.2};
Point pt02{
   3.3, 4.4};

5、嵌套类

(1)What(什么是嵌套类)

定义或声明在类内部的类,它可以访问外部类的私有成员,并能在外部类作用域内使用

(2)Why (嵌套类的作用)

封装和隐藏:将嵌套类进行私有化,实现封装和隐藏<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值