
C++自学笔记
文章平均质量分 61
garbage_man
持续进步中!
展开
-
看完《C++ primer》后,我都收获了什么?
学完《C++ primer》后,我收获了什么? 迫于读研和未来就业的压力,我研一上自学了C++的这门语言,自我感觉比较认真的看完了《C++ primer》这本书的大部分章节,算是系统性的过了一遍C++这门语言。期间,结合自己本科时学习汇编和C语言的经历,我想谈一谈我对学习编程的一些想法,希望能够对屏幕前的你有一些启发1- 语言只是一个工具 无论是计算机科班生,或者是非科班生,在最开始接触编程的时候,脑海里总是会思考我应该学习什么语言好。我当初也是有过这样一段经历: 大一工科选修了一门C原创 2021-01-26 21:40:53 · 2474 阅读 · 6 评论 -
如何正确区分以下四种指针?
如何区分下列四种指针: int *p[10] int (*p)[10] int *p(int) int (*p)(int)原创 2022-06-04 19:14:43 · 343 阅读 · 0 评论 -
一文搞懂顶层const和底层const
最近在准备秋招,复习到了const。看到了一些关于const的问题和回答。感觉大家在针对const的顶层和底层这个点上说的都不是很清楚。今天想借这个机会和大家一起聊聊顶层const和底层const到底是怎么一回事。原创 2022-06-02 17:19:35 · 601 阅读 · 1 评论 -
一文搞懂C++虚函数的实现原理
虚函数是实现C++中面向对象的三大特性之一——多态的一种技术手段。什么是多态呢?在基类的成员函数前,使用修饰得到的就是虚函数。在派生类中,对继承得到的虚函数,进行重写,使得派生类对继承的方法有了自己的具体实现。在外部函数中,通过基类指针调用类的接口,在程序运行时,会根据指针绑定的对象选择对应的接口,这便是多态。多态简单来说,是让同一种事物有了多种不同的表现。基类指针绑定了类对象后,程序运行时,是怎么知道该运行哪个类的接口函数呢?这便是本篇文章要探究的问题。C++为了实现虚函数的动态绑定,在每一个类(当然是原创 2022-06-01 17:30:53 · 3709 阅读 · 0 评论 -
C++对象移动(3)——移动构造函数
前言什么是移动构造函数?原创 2021-02-15 21:41:32 · 326 阅读 · 0 评论 -
C++对象移动(2)——右值引用
前言为什么C++要增加右值引用(rvalue reference)?原创 2021-02-15 21:40:23 · 290 阅读 · 0 评论 -
C++对象移动(1)——理解左值和右值
前言左值(lvalue)和右值(rvalue)是 c/c++ 中一个比较晦涩基础的概念,不少写了很久c/c++的人甚至没有听过这个名字,但这个概念到了 c++11 后却变得十分重要,它们是理解 move/forward 等新语义的基础。左值和右值的定义关于左值和右值的准确定义,大家一直众说纷纭,很难给这两个名词下一个非常清晰的定义。有一种说法大家的接受度比较高:lvalue – An object that occupies some identifiable location in memo原创 2021-02-15 21:34:25 · 448 阅读 · 0 评论 -
c++中回调函数(函数指针)
文章目录一、回调函数(函数指针)1.1 函数指针1.2 回调函数的理解1.3 回调函数的应用价值总结一、回调函数(函数指针)1.1 函数指针函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型。函数的类型由它的返回类型和形参类型共同决定,与函数名无关。下面,我们来定义一个函数指针//定义了一个返回类型为bool,形参列表如下所示的函数指针p_func,指向为空bool p_func(int a, int b) = nullptr;1.2 回调函数的理解C++ Prime.原创 2020-12-30 21:28:00 · 864 阅读 · 0 评论 -
c++中在堆区通过new关键字创建二维数组的方法
背景:因为本人课程《计算方法》需要自己编译程序进行上千行的矩阵的运算,栈区的数组长度不能满足,因此在堆区创建一个二维数组进行相应的操作在网上搜索如何在堆区创建二维数组,得到以下结果:如何理解这个语句的含义呢?首先,我们都知道,在堆区中创建一维数组的方式为:int *p = new int[10];这个语句的意思是:在堆区开辟了一个长度为10个单位,元素的数据类型为int的存储空间,然后将这段存储空间的首地址赋值给指针p,指针p通过下标运算符或者自增即可访问对应的地址里的元素。那么我们再来看这原创 2020-10-27 22:49:50 · 2953 阅读 · 4 评论 -
你真的理解c++中初始化和赋值这两个概念吗?
谈一谈我对c++中构造函数的理解构造函数时c++面向对象开发中十分重要的一个特性,对构造函数理解的深入,有助于我们对语言底层的工作的了解,同时也会帮助我们看懂他人比较复杂的代码。正文: 在说这个构造函数之前,我们先来回顾一下《c++ primer》上的一句话,这句话出自书的2.2(P39):在c++语言中,初始化是一个异常复杂的问题,我们已将反复讨论这个问题,很多程序员对于用=来初始化变量的方式倍感困惑,这种方式容易让人认为初始化是赋值的一种。事实上在c++语言中,初始化和赋值是两个完全不同的操作原创 2021-01-07 18:15:59 · 1115 阅读 · 3 评论