C++程序设计知识点汇总

本文深入探讨C++面向对象编程的核心概念,包括类、对象、构造与析构、继承与多态、虚函数及纯虚函数。解析参数传递、函数重载、内联与静态特性,以及C++内存管理机制,如new与malloc的区别,为读者提供全面的C++面向对象编程指南。

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

1 面向对象编程

面向对象编程是将对象抽象成类,把类的数据与操作封装在一起而进行的编程。
优点:易维护、提高代码复用率

2 参数传递的方式

  • 数据复制:创建形参,复制实参的值,占用不同的存储空间
  • 地址传递:传入参数的地址,函数对指针所指向的内容进行操作
  • 引用方式:相当于变量的别名,但不能指向空地址,且不可变

3 函数重载

用于不同参数类型获参数数目不同时

4 内联函数

inline:在被调用的每一个地方都插入它的一份拷贝,适用于小函数。

5 静态变量

全局静态变量:作用域在本文件中,程度运行期间一直存在。
局部静态变量:作用域在本语句块中,离开作用域后不被销毁。
静态变量存储在内存数据区,在程序运行过程中不释放,结束后才释放内存。

6 静态函数

只在本文件中可见,不能被其他文件所用。避免函数重名冲突。

7 C++内存管理

C++内存管理
C++中内存分为代码段、数据段、BSS段、堆区、文件映射区、栈区。
栈区:函数局部变量的存储空间在栈上;
文件映射区:存储动态连接库和大空间的分配,mmap文件映射;
堆区:调用new/malloc在堆区分配内存;
BSS段:存储未初始化的全局变量和静态变量;
数据段:存储初始化的全局变量和静态变量;
代码段:文本区存储程序的机器码。

8 指针

指针是一种特殊的变量,存放被指向内容的内存地址。
除可以指向常用的变量外,指针也可以指向数组、类、函数等,指针也可以用数组存放。

9 new和malloc的区别

new是C++中的函数,可以为变量分配对应的内存空间;
malloc是C中的函数,它需要指定分配空间的大小,需要借用size of函数,因为它不能通过变量的类型自动判断

10 类的构造函数和析构函数

类的构造函数在生成对象时被调用,用于为对象分配空间,并初始化对象,构造函数也可以重载。
类的析构函数在对象释放前调用,做一些清理工作。

11 类和对象

类相当于数据类型,对象时类的实例化。

12 友元函数

友元函数定义在类的外部,但可以访问类的私有成员,它不是成员函数,但在类中声明。

13 运算符重载

运算符重载可以重新定义运算符。
重载方式:

  • 成员函数重载运算符,常用于类与数据运算
  • 友元函数重载运算符,常用于类与类的运算

14 继承

公有继承、保护继承、私有继承。
基类的私有成员都不能被派生类访问。

14.1 虚继承

继承
继承
继承
继承
A类
B类
C类
D类

当B、C都继承了A,D又继承了B、C,会出现命名冲突和冗余数据的问题。
利用虚继承,可以解决上述问题,即

class B:virtual public A{};
class C:virtual public A{};

15 多态

多态是指调用成员函数时,会根据调用函数的对象类型来执行不同的函数。

15.1 静态方式

利用函数重载、运算符重载实现多态。

15.2 动态方式

利用虚函数和基类指针来实现多态。

16 虚函数

虚函数是指在基类定义后,可以在派生类定义同名函数实现不同的功能。
利用基类指针,分别指向不同的派生类后调用函数,就可以实现派生类中定义的函数功能。

16.1 纯虚函数

纯虚函数的定义如下:

virtual 函数类型 函数名() = 0;

16.2 抽象类

包含纯虚函数的类成为抽象类,一个类可以有多个纯虚函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值