C++面向对象
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16390563.html
C++面向对象
C++ 变量:引用类型的成员对象
https://blog.csdn.net/hit_shaoqi/article/details/121062158
C++ 中有两种类型的表达式:
左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。 变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句: int g = 20;
在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值
请注意,把常量定义为大写字母形式,是一个很好的编程实践。
C++ 中的类型限定符:const restrict
函数参数
如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。 形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。 当调用函数时,有三种向函数传递参数的方式: 调用类型 描述 传值调用 该方法把参数的实际值赋值给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。 指针调用 该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 引用调用 该方法把参数的引用赋值给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 默认情况下,C++ 使用传值调用来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的参数
C++ 指针:
ptr = new int; //在堆中开辟一块int大小的内存空间,并令指针ptr指向它
this 常量指针 this指针 存储的是 对象的地址
解释https://blog.csdn.net/fengbingchun/article/details/51228177
最详细的讲解C++中指针的使用方法(通俗易懂)
https://blog.csdn.net/galaxyrt/article/details/117253022
C++指针
https://www.cnblogs.com/xqy-888/p/11515485.html
C++ 继承:
若继承方式是public,基类成员在派生类中的访问权限保持不变,也就是说,基类中的成员访问权限,在派生类中仍然保持原来的访问权限; 若继承方式是private,基类所有成员在派生类中的访问权限都会变为私有(private)权限; 若继承方式是protected,基类的共有成员和保护成员在派生类中的访问权限都会变为保护(protected)权限,私有成员在派生类中的访问权限仍然是私有(private)权限。 原文链接:https://blog.csdn.net/casky237/article/details/54766881
在C++中子类继承和调用父类的构造函数方法 https://blog.csdn.net/hemmingway/article/details/7853713
创建类的新对象时执行类的构造函数
static 静态成员,静态成员函数
静态成员: 静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。 我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化
静态成员函数: 静态成员函数即使在类对象不存在的情况下也能被调用, 静态函数只要使用类名加范围解析运算符 :: 就可以访问。
静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。 可以使用静态成员函数来判断类的某些对象是否已被创建。
静态成员函数与普通成员函数的区别: 静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数) 普通成员函数有 this 指针,可以访问类中的任意成员
C++ 重载:
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 C++ 中的函数重载 在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。 您不能仅通过返回类型的不同来重载函数。 C++ 中的运算符重载 您可以重定义或重载大部分 C++ 内置的运算符。这样,您就能使用自定义类型的运算符。 重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。 与其他函数一样,重载运算符有一个返回类型和一个参数列表。
C++ 多态
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。
C++虚函数
虚函数 是在基类中使用关键字 virtual 声明的函数。 在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。 我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接,或后期绑定。
纯虚函数 您可能想要在基类中定义虚函数,以便在派生类中重新定义该函数更好地适用于对象, 但是您在基类中又不能对虚函数给出有意义的实现,这个时候就会用到纯虚函数。
C++ 数据抽象
数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。
数据抽象是一种依赖于接口和实现分离的编程(设计)技术。 让我们言归正传,就 C++ 编程而言,C++ 类为数据抽象提供了可能。 它们向外界提供了大量用于操作对象数据的公共方法,也就是说,外界实际上并不清楚类的内部实现。
数据封装
数据封装是一种把数据和操作数据的函数捆绑在一起的机制, 数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。
C++ 接口(抽象类)
C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的
C++ 模板
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。 每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector <int> 或 vector <string>。 您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。
函数模板
C++ 动态内存:
一维数组的动态内存分配: // 动态分配,数组长度为 m int *array=new int [m]; //释放内存 delete [] array;
对象的动态内存分配和数组差不多
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)