qt学习篇---C++基础学习

本学习笔记学习下面视频总结,感兴趣可以去学习。讲的很详细

【北京迅为】嵌入式学习之QT学习篇_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1tp4y1i7EJ/?spm_id_from=333.337.search-card.all.click&vd_source=8827cc0da16223b9f2ad8ae7111de9e2

目录

C++

1.C++和C语言区别

2.C++的类

3.什么是对象

4.类的函数成员

5.类的访问修饰符

C++基本特性

1.类函数的重载特性

2.构造函数和析构函数

3.类的继承

4.虚函数和纯虚函数


C++

1.C++和C语言区别

c++是面向对象,c语言是面向过程

比如直接计算a+b是面向过程,给a+b穿上一层衣服就是面向对象,不是直接相加。

2.C++的类

c结构体升级版,类成员不止可以是变量也可以是函数。

定义:

class student
{
public:          //类的访问修饰符
    char name[64];
    int age;
};

3.什么是对象

类的实例化。

//直接定义
student my;   //student就是类,my就是对象   
//在堆里面定义
student *my = new student;

//C++中进行动态内存分配的一个例子。它在堆上创建了一个新的"student"类的对象,并将该对象的地址赋给指针变量"my"。这样可以让你使用超出对象创建函数或块的范围的对象。只需记得在使用完对象后使用"delete"关键字来正确释放内存,以防止内存泄漏

访问和c一样

    student my;
    student *my1 = new student;
    my.age = 18;
    my1->age = 19;
    cout << my.age <<endl;
    cout << my1->age <<endl;

堆(heap)和栈(stack)是两种不同的内存分配方式,它们在内存中的位置和分配方式有所不同。

栈是一种线性的数据结构,它是一块连续的内存空间,存储程序在运行过程中的临时数据和函数调用。栈的大小受限于系统设置的栈大小,通常比较小,变量的分配和释放是自动的,由系统自动管理,每次只能访问栈顶元素。

       

堆是一种动态分配的内存空间,它的大小不受限制,程序员可以根据需要动态分配和释放内存。堆的内存分配和释放由程序员手动管理,需要注意内存泄漏的问题。

在C++中,使用new和delete操作符可以分别在堆上动态分配内存和释放内存;在Java中,使用new关键字来在堆上创建对象,而垃圾收集机制会负责释放内存。

4.类的函数成员

第一步:在类里面声名

第二步:实现这个函数。我们可以直接在类里面写,也可以在写在类的外面。

直接写在类里面

class student
{
public:
    char name[64];
    int age;
    void test(){
        cout << 123 <<endl;
    };
};

类外面

student::表示属于这个类里面的函数,不这样的话会识别成普通函数

class student
{
public:
    char name[64];
    int age;
    void test();
};
void student::test(){
     cout << 123 <<endl;
};

访问函数和访问变量是一样的。

5.类的访问修饰符

对类的成员进行权限管理。

public:表示函数和变量是公开的,任何人可以访问。

private:只能在自己的类里访问自己,不能通过对象来访问。

强行访问?先函数访问,再对象访问。可以输出。

protected:也是只能在自己的类里自己访问自己,但是可以被派生类来访问

C++基本特性

1.类函数的重载特性

我们可以在类里面定义同名的函数,但是参数不可以相同

class student
{
public:
    char name[64];
    int age;
    void test();
    void test(int i);
    
  private:
    int a;
};

重载函数在调用时会根据函数参数类型,然后去匹配相应的函数进行调用。如:

 my.test(20);

2.构造函数和析构函数

析构函数:假如我们定义了析构函数,当对象被删除或者生命周期结束,就会触发。

构造函数:假如我们定义了构造函数,对象被创建的时候就会触发。

构造函数可被重载,析构函数不行

 student *my1 = new student(10);

定义:

class student
{
public:
    student();
    char name[64];
    int age;
    void test();
    void test(int i);
  private:
    int a;
};

student::student(){
     cout << "hello" <<endl;
};

触发两次打印两句hello

名字和类名一模一样;析构函数前面加~,构造函数不用。

student::~student(){
     cout << "hi" <<endl;
};

 

int main()
{
    //test();
    student my;
    student *my1 = new student;
    my.age = 18;
    my1->age = 19;
    cout << my.age <<endl;
    cout << my1->age <<endl;
    my.test(20);
    delete my1;
    return 0;

当对象被删除或者生命周期结束,就会触发。打印2个hi。

3.类的继承

允许在新的类里面继承父类的public还有protected部分,private不能被继承

 当觉得这个类不好的时候,可以使用类的继承,添加我们需要的功能。

class 儿子:public爸爸{
    public:
    .........
    protected:
        
}
//例子
class mystudent:public student
{
public:
    int grade;
    
};

 访问。也是通过.和->来访问

    my2.grade = 1;
    my2.age = 15;
     cout << my2.grade <<endl;
      cout << my2.age <<endl;

 

4.虚函数和纯虚函数

虚函数:有实际定义的,允许派生类对他进行覆盖式的替换(子类覆盖),virtual来修饰。

纯虚函数:,没有实际定义的虚函数就是纯虚函数

 virtual void test(); //虚函数
    virtual test(){}  //纯虚函数

怎么定义一个虚函数?

用virtual修饰,虚函数是用在类的继承上的。

虚函数优点

可以预留接口(覆盖),方便封装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/581785.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript数组方法练习

第一个练习 ● 计算所有账户的存款总额 const bankDepositSum accounts //定义一个变量.flatMap(acc > acc.movements) //使用flatmap将所有的存款提取&#xff0c;然后组成一个新的数组.filter(mov > mov > 0) //使用filter方法提取所有的正值.reduce((sum, c…

【前端】VUE项目创建

在所需文件夹中打开cmd命令行窗口&#xff0c;输入vue ui 进入web可视化界面选择创建新项目 根据需求依次完成下列选择&#xff0c;下列是参考配置&#xff0c;完成后点击创建项目即可 最终显示完成

upload-labs后续(14-)

图片马 在图片中加入木马&#xff0c;然后上传让浏览器解析&#xff0c;达到上传木马的目的 制作图片马&#xff1a;可以在notepad或者winhex中打开文件&#xff0c;在文件头中加入图片的文件头&#xff0c;再在文件末尾加入木马即可。 图片文件头如下&#xff1a; 1.Png图片…

B站广告推广开户最低需要多少钱?

在竞争激烈的互联网营销环境中&#xff0c;哔哩哔哩&#xff08;B站&#xff09;作为深受年轻人喜爱的视频分享平台&#xff0c;其广告价值不容小觑。对于希望在B站上进行广告推广的企业或个人而言&#xff0c;了解开户流程及成本&#xff0c;选择专业的服务团队至关重要。介绍…

AI图书推荐:ChatGPT写论文的流程与策略

论文一直是任何学术学位的顶峰。它展示了学生在研究领域的兴趣和专业知识。撰写论文也是一个学习经验&#xff0c;为学术工作以及专业研究角色做好准备。但是&#xff0c;论文工作总是艰苦的&#xff0c;通常是充满乐趣和创造性的&#xff0c;但有时也是乏味和无聊的。生成式人…

kerberos-hive-dbeaver问题总结

一、kerberos安装windows客户端 1、官方下载地址 http://web.mit.edu/kerberos/dist/ 2、环境变量配置 下载msi安装包&#xff0c;无需重启计算机&#xff0c;调整环境变量在jdk的前面&#xff0c;尽量靠前&#xff0c;因为jdk也带了kinit、klist等命令 C:\Program Files\…

Kotlin泛型之 循环引用泛型(A的泛型是B的子类,B的泛型是A的子类)

IDE(编辑器)报错 循环引用泛型是我起的名字&#xff0c;不知道官方的名字是什么。这个问题是我在定义Android 的MVP时提出来的。具体是什么样的呢&#xff1f;我们看一下我的基础的MVP定义&#xff1a; interface IPresenter<V> { fun getView(): V }interface IVie…

41. UE5 RPG 设置火球术的碰撞类型

在上一篇中&#xff0c;我们设置了火球术从发射到击中敌人的整个周期使用的音效和特效&#xff0c;现在看上去它像一个真正的火球术了。在这一篇文章里面&#xff0c;我们主要解决一下火球术碰撞的问题&#xff0c;现在已知的问题是&#xff0c;有些不需要和火球产生碰撞的物体…

代码随想录-二叉树(节点)

目录 104. 二叉树的最大深度 题目描述&#xff1a; 输入输出描述&#xff1a; 思路和想法&#xff1a; 111. 二叉树的最小深度 题目描述&#xff1a; 输入输出描述&#xff1a; 思路和想法&#xff1a; 222. 完全二叉树的节点个数 题目描述&#xff1a; ​输入输出描…

商汤研究院招大模型实习生

商汤研究院招大模型实习生&#xff0c;base上海、北京&#xff0c;400/day。福利&#xff1a;每天50租房补贴&#xff0c;20的餐补。晚上8点之后回去有额外的25元晚餐餐补&#xff0c;10点之后回去可以免费用滴滴。 组内的大模型工作大概分两个方向&#xff1a; 1.3B、3B等小…

特别的时钟特别的倒计时

念念不忘的歌曲&#xff1a;Thats Why You Go Away <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&…

IDEA新版本创建Spring项目只能勾选17和21却无法使用Java8的完美解决方案

想创建一个springboot的项目&#xff0c;使用Spring Initializr创建项目时&#xff0c;发现版本只有17&#xff5e;21&#xff0c;无法选择Java8。 我们知道IDEA页面创建Spring项目&#xff0c;其实是访问spring initializr去创建项目。我们可以通过阿里云国服间接创建Spring项…

工业异常检测

工业异常检测在业界和学界都一直是热门&#xff0c;近期其更是迎来了全新突破&#xff1a;与大模型相结合&#xff01;让异常检测变得更快更准更简单&#xff01; 比如模型AnomalyGPT&#xff0c;它克服了以往的局限&#xff0c;能够让大模型充分理解工业场景图像&#xff0c;判…

Redis哈希槽和一致性哈希

前言 单点的Redis有一定的局限&#xff1a; 单点发生故障&#xff0c;数据丢失&#xff0c;影响整体服务应用自身资源有限&#xff0c;无法承载更多资源分配并发访问&#xff0c;给服务器主机带来压力&#xff0c;性能瓶颈 我们想提升系统的容量、性能和可靠性&#xff0c;就…

paddleocr C++生成dll

目录 编译完成后修改内容: 新建ppocr.h头文件 注释掉main.cpp内全部内容&#xff0c;将下面内容替换进去。ppocr.h需要再环境配置中包含进去头文件 然后更改配置信息&#xff0c;将exe换成dll 随后右击重新编译会在根目录生成dll,lib文件。 注意这些dll一个也不能少。生成…

伪装目标检测论文阅读 SAM大模型之参数微调:Conv LoRA

paper&#xff1a;link code&#xff1a;还没公开 摘要 任意分割模型(SAM)是图像分割的基本框架。虽然它在典型场景中表现出显著的零镜头泛化&#xff0c;但当应用于医学图像和遥感等专门领域时&#xff0c;其优势就会减弱。针对这一局限性&#xff0c;本文提出了一种简单有效…

Java进阶-JavaStreamAPI的使用

本文全面介绍了 Java Stream API 的概念、功能以及如何在 Java 中有效地使用它进行集合和数据流的处理。通过详细解释和示例&#xff0c;文章展示了 Java Stream API 在简化代码、提高效率以及支持函数式编程方面的优势。文中还比较了 Java Stream API 与其他集合处理库的异同&…

Django之搭配内网穿透

一&#xff0c;安装coplar 二&#xff0c;开启8087的内网穿透 三&#xff0c;setting.py中加入如下配置&#xff1a; ALLOWED_HOSTS [*]CSRF_TRUSTED_ORIGINS ["https://localhost:8087", "http://localhost:8087"]四&#xff0c;启动项目 五&#xff…

比较美观即将跳转html源码

源码介绍 比较美观即将跳转html源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 源码截图 比较美观的一个跳转界面&#xff0c;修改方法如上&…

MATLAB实现果蝇算法优化BP神经网络预测分类(FOA-BP)

果蝇算法&#xff08;Fruit Fly Optimization Algorithm, FFOA&#xff09;是一种启发式优化算法&#xff0c;受果蝇觅食行为的启发。将其应用于优化BP神经网络&#xff0c;主要是为了寻找BP神经网络中的最佳权重和偏置值。以下是一个基本的流程&#xff1a; 初始化&#xff1a…