C++学习笔记9 - 类与面向对象中的关键字

本文深入探讨了C++中的类与面向对象编程,包括struct与class的区别、访问权限控制、对象的创建与销毁。此外,详细阐述了static和this关键字的使用,以及其他面向对象的关键字如继承、虚函数、final、using、friend和explicit,以及const关键字在C++中的重要作用。最后,简要介绍了模板编程中的template和typename关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、C++类与面向对象

struct 和 class

  1. struct 是C 中用户自定义类型,主要功能是对功能相关数据的封装
  2. struct 不能直接封装函数,但可以通过封装函数指针来间接封装函数
  3. struct 就是 class 的初级阶段,class 在 struct 基础上做了很多扩展,便有了面向对象

访问权限

  1. 类是对数据(成员变量)和方法(成员函数)的封装
  2. 封装的一个重要特征就是访问权限管控,本质是为了隐藏实现细节,避免意外篡改
  3. C++ 支持三个访问管控级别:private、protected、public

C++的对象创建和销毁

  1. 对象的本质等同于C中的变量,对象的创建和销毁也就是变量的产生和销毁,本质上是变量对应的内存地址的分配和释放。
  2. C中的全局变量和局部变量都是自动分配和回收内存的,堆内存需要用户手动申请和释放(malloc和free调用)
  3. C++ 中因为变量升级成了对象,涉及到构造函数和析构函数,因此 malloc 和free 升级为了 new 和 delete
  4. C++ 中仍然大量使用全局变量和局部变量,但是动态分配占比越来越多。这是业务特点决定的,不是C++语言决定的。语言只是提供机制,业务才决定策略。

二、C++中 static 和 this 关键字

static 在C 中的用法

  1. 静态全局变量和函数,限制链接属性(只能在当前C文件中使用)。C++中建议优先使用命名空间机制替代
  2. 静态局部变量,更改地址域和生命周期(随程序终止而终止)。C++中继续沿用

static 在 C++中新增用法

  1. 用在 class 中,有静态数据成员 和 静态成员函数
  2. 简单理解:静态成员和方法都是属于 class 的,而非静态是对于对象的(只有对象才能调用)
  3. 静态类往往用在单例模式中,实际上和面向对象的思想有所差异

this 关键字

  1. 本质是个指针,指向当前对象
  2. this 的主要作用是让我们在未定义对象前可以在方法中调用对象里的成员

static和this的使用demo

#include <iostream>

using namespace std;

class A
{
   
public:
	// 成员变量
	int i;
	
	// 成员函数 方法
	void func1(void);
	
	// 静态成员变量
	static int j;
	
	// 静态成员方法
	static void func2(void);		// static是一个声明性的
	
};

void A::func1(void)
{
   
//	cout << "A::func1, i = " << i << endl;		// 成员函数中访问成员变量,等同于下面
	cout 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值