
C++
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
程序员草帽
夯实基础,空杯心态,实践为王。
专注于自动驾驶方向,致力于技能提升突破,不时记录所遇到的知识点,感谢您的关注!
展开
-
一文详解原码, 补码, 反码
1-127的结果应该是-128, 在用补码运算的结果中, [1000 0000]补 就是-128. 但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的)1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原。原创 2022-10-24 20:39:42 · 818 阅读 · 0 评论 -
C++中运算符|=和&=的具体含义
我们在C/C++语言中经常会碰到 && 和 || 运算符,当然也很清楚它们的具体含义,无非就是与和或的解释,再延伸一下就知道运算符 & 和 | 的大概含义。& 在C/C++语言中可能表示两种运算符。如果运算对象只有一个,且为右操作数,那么&为取地址运算符,结果为操作对象的地址。例如&a(假设a是一个左值,即具有具体的可访问的地址)结果为a的地址,所以&=的意思是先取地址再赋值。如果运算对象有两个,那么&表示位与运算。结果中的每一个二进制位等于两个运算数的对应位置的二进制位按位与。每一个位的位与运算法则是,原创 2022-06-10 10:28:05 · 13908 阅读 · 0 评论 -
Linux下程序中如何使用mkdir建立文件夹
Linux下如下代码中,mkdir()需要两个参数,第一个参数是权限,第二个参数含义是在当前程序所在目录中创建文件夹log;system("mkdir -p log");原创 2022-04-26 16:03:57 · 515 阅读 · 0 评论 -
C++ namespace用法详细介绍
编写程序过程中,名称(name)可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大,名称互相冲突性的可能性越大。另外使用多个厂商的类库时,也可能导致名称冲突。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的 C++ 库时,这些标识符的命名发生冲突,标准 C++ 引入关键字 namespace(命名空间/名字空间/名称空间),可以更好地控制标识符的作用域。例如,我们在 C 语言中,通过 static 可以限制名字只在当前编译单元内可见,在 C++原创 2022-04-12 16:37:03 · 7884 阅读 · 2 评论 -
C++小技巧
c++标准定义中根本不存在void main(),有些编译器会报错。为了程序可移植性,最好用int原创 2022-03-29 11:29:45 · 965 阅读 · 0 评论 -
return 0 与 return 1 与 return -1的用法含义
1、return 0第一个含义一般用在主函数结束时,按照程序开发的一般惯例,表示成功完成本函数。第二个含义表示假,一般用于bool函数返回值。在C++中也可以直接用int,返回值为0时为假。宏定义ERROR 与FLASE一般为0。2、return 1与return 0 的第二个含义相对应,表示真,正确。宏定义TRUE,OK一般为1。3、return -1与return 0 的第一个含义相对应,表示返回一个代数值,一般用在子函数结尾。按照程序开发的一般惯例,表示该函数失败,在数据结构中,一般原创 2022-03-29 11:25:23 · 22943 阅读 · 0 评论 -
在定义结构体时变量名后的冒号和数字具体含义
在阅读代码时看到有以下代码: struct { //按照位数来赋值 uint64_t RadarCfg_MaxDistance_valid:1; uint64_t RadarCfg_SensorID_valid:1; uint64_t RadarCfg_RadarPower_valid:1; uint64_t RadarCfg_OutputType_valid:1; uint64_t RadarCfg_SendQuality_valid:1; .原创 2022-03-07 17:02:29 · 2460 阅读 · 0 评论 -
内存分配的三种方式
不同的内存分配方式,有不同的内存调度机制。C++ 语言的三种内存分配方式分别是:静态存储区分配、栈内存分配和堆内存分配。静态存储区分配静态分配方式下的内存在程序编译的时候就已经分配好了且存在于程序的整个运行过程。例如 static 变量,其生命周期随程序的结束而结束,而非像一般变量随函数或作用域的结束而结束。除了 static 变量,还有一种全局对象 static object,也可以存放在静态存储区。栈内存分配栈内存分配方式下的内存是存在于某作用域的一块空间。例如调用某个函数时,函数内原创 2021-08-31 16:57:18 · 1955 阅读 · 0 评论 -
面向对象程序设计的基本特点
面向对象程序设计的基本特点包括:抽象、封装、继承、多态。抽象抽象是指对具体问题或对象进行概括,抽出其公共性质并加以描述的过程。一般情况抽象分为数据抽象和行为抽象,其中数据抽象是指一个对象区别于另一个对象的特征,行为抽象是指某类对象的共同特征。封装封装是指将抽象得到的数据和行为相结合,隐藏对象属性和实现细节且仅对外提供公共访问方式的过程。继承继承是指通过代码复用在保持原有类特性的基础上对子类进行具体说明的过程,通俗来说继承就是精简重复代码的手段。多态多态是指一段程序能够处理多种原创 2021-08-30 12:04:31 · 7818 阅读 · 0 评论 -
C++知识:this 指针详解
每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。注意:友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。示例代码 :#include <iostream>using namespace std;class Array{public: Array(int Len = 0) : Len(Len) { cout << "Array.原创 2021-06-22 16:55:44 · 384 阅读 · 0 评论 -
栈与堆对比
功能 栈 堆 申请与释放 编译器自动分配、回收 程序员分配和释放(C 使用 malloc 申请内存、free 释放内存;C++ 使用 new 申请内存、delete 释放内存) 申请内存后系统的响应 申请空间大于栈空间时程序将提示异常 (栈溢出) 超过内存空间程序报异常 空间大小限制 window 1 M linux 8 M 系统内存,比栈大很多 申请效率 快 比较慢 ...原创 2021-06-21 14:11:40 · 149 阅读 · 0 评论 -
C++的使用:实例化对象
实例化对象有两种方式,一种是在栈上实例化,另一种是在堆上实例化。示例代码 2int main(){ // 栈上实例化 Student stu1; stu1.setName("jake"); stu1.setAge(15); cout << "My name is " << stu1.getName() << ", I'm " << stu1.getAge() << " years old." .原创 2021-06-19 10:48:47 · 2866 阅读 · 0 评论 -
C++ 相关概念
概念 描述 构造函数 类的构造函数是一种特殊的函数,在创建一个新的对象时自动调用 析构函数 类的析构函数也是一种特殊的函数,在删除所创建的对象时自动调用 拷贝构造函数 拷贝构造函数,是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象 友元函数 友元函数可以访问类的 private 和 protected 成员 内联函数 通过内联函数,编译器试图在调用函数的地方扩展函数体中的代码 类成员函数 类的成员函数是指原创 2021-06-18 17:00:29 · 153 阅读 · 0 评论