首页 > 编程语言 >C++基础知识系列-4

C++基础知识系列-4

时间:2023-05-31 18:03:24浏览次数:34  
标签:系列 函数 定义 C++ 基础知识 引用 内联 指针

C++基础

1 C++的struct和class的区别

区别1:默认继承的权限。不明确指定的情况下,来自class的继承按照private继承处理,来自struct继承按照public处理 区别2:成员的默认访问权限。class成员默认是private权限,struct默认是public

2 C和C++区别

struct上的区别:C中无Protection行为,不能定义函数,但有函数指针;C++有Protection行为,可以定义函数; 机制上:C面向过程(但可以写面向对象的程序);C++面向对象,编写面向对象比C简单; 方向上:C适合代码体积小,效率高的场景,如嵌入式、linux系统;C++适合更上层,复杂的场景

3 指针和引用的区别

指针是通过定义一个指针变量指向一个对象后,对所指变量间接操作;程序中使用指针,程序的可读性差; 引用本身是目标变量的别名,对引用操作就是对目标变量的操作; 1)引用必须被初始化,指针不必; 2)引用初始化以后不能被改变,指针可以改变所指的对象; 3)不存在指向空值的引用,但存在指向空值的指针。

4 虚函数-关键字virtual

如果希望派生类能够重新定义基类的方法,则在基类中将该方法定义为虚方法,这样可以启用动态联编。

5 int id[sizeof(unsigned long)]; 这种写法正确,sizeof关键字是编译时运算符,编译时确定

6 静态全局变量(或称静态外部变量)其作用域:仅限于定义该变量的源文件内有效

7 C++函数中值的传递方式:值传递,指针传递、引用传递

8 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

C用宏定义,C++用inline。内联函数用于:解决频繁调用的小函数对栈内存反复开辟的消耗。使用inline时应将其放在头文件中,且必须与函数定义放在一起实现,不能仅放在函数声明前。

使用内联函数的目的是为了提高函数的运行效率。 内联函数体的代码不能过长,因为内联函数省去调用函数的时间是以代码膨胀为代价的。 内联函数不能包含循环语句,因为执行循环语句要比调用函数的开销大。

9 Debug和Release的区别

Debug调试版本,包含调试信息,带有大量调试代码,运行需要相应的运行库,不做优化,便于程序员调试; Release发布版本,进行了代码大小和运行速度优化,不含调试代码和信息,便于用户使用。

10 函数assert用法

断言assert是尽在debug版本起作用的宏,用于检查“不应该”发生的情况。

 

 

 

 

 

 

 

 

 

 

标签:系列,函数,定义,C++,基础知识,引用,内联,指针
From: https://www.cnblogs.com/wj0518/p/17446909.html

相关文章

  • c++算法:二分
    算法中,有一种比线性查找算力费得更少的一种算法思想,叫“分治”,今天讲的是分治里的二分查找:借助(low+high)/2公式,找到搜索区域内的中间元素。图1中,搜索区域内中间元素的位置是 ⌊(1+10)/2⌋=5,因此中间元素是27,此元素显然不是要找的目标元素。然后就是缩小范围。 下面就是......
  • C++ 初始化赋值
    把值写在小括号中,等于号可以省略(C++标准)inta=(15);intb(20);把值写在花括号中,等于号也可以省略(C++11标准),统一初始化列表注意:在Linux平台下,编译需要加-std=c++11参数inta={15};inta{15};......
  • 《kubernetes 系列》6. etcd 的租约是怎么一回事?
    楔子etcd的一个典型的应用场景是Leader选举,那么etcd为什么可以用来实现Leader选举?核心特性实现原理又是怎样的?本篇文章就来聊一聊Leader选举背后的技术点之一:租约(Lease),通过解析它的核心原理、性能优化思路,从而对Lease如何关联key、Lease如何高效续期、淘汰、什么......
  • c++面试 笔试基础知识学习记录
    1.int(*p)[4]和int*p[4]int(*p)[4],p是一个指针变量,指向一个存放4个int变量的一维数组,p+1是向后移动数组长度个字节大小,也就是向后移动4个int字节的大小。*(*(p+1)+2)=*(p[1]+2)int*p[4],等价于int*(p[4]),[]优先级高于*所以p首先是一个数组。即定义了一个指针数组,p就......
  • C/C++杂记:NULL与0的区别、nullptr的来历
    某些时候,我们需要将指针赋值为空指针,以防止野指针。 有人喜欢使用NULL作为空指针常量使用,例如:int*p=NULL;。也有人直接使用0值作为空指针常量,例如:int*p=0;。 前者可能觉得:NULL作为空指针常量,名字很形象,可读性较强。后者可能觉得:NULL并不是C/C++语言的关键字,而是一......
  • C/C++杂记:深入虚表结构
    1.虚表与“虚函数表”在“C/C++杂记:虚函数的实现的基本原理”一文中曾提到“虚函数表”的概念,只是为了便于理解,事实是:虚函数表并不真的独立存在,它只是虚表(virtualtable)中的一部分内容。例:从图中可已看出,虚表除了包含虚函数指针,还包含其它一些信息(如:RTTI信息、偏移值等)。顺便......
  • 关于C++字符串的一些函数
    其实印象里,c的char用法反倒比c++的string深一点,可能是因为我对string的运用太少了吧。 提到C++的string,就得先提一下首先提一下C的char类型,毕竟C++是根据C延展过来的,继承了C的特性,而且C本身是没有string这个东西的。 char是什么?一个关键字,用于声明一个变量是字符类型。好吧,......
  • 谐波的分类介绍及ANAPF系列有源电力滤波装置的应用
    安科瑞虞佳豪谐波是正弦波,每个谐波都具有不同的频率,幅度与相角。谐波频率是基波频率的整倍数,根据法国数学家傅立叶(M.Fourier)分析原理证明,任何重复的波形都可以分解为含有基波频率和一系列为基波倍数的谐波的正弦波分量。根据谐波频率的不同,可以分为:1、奇次谐波额定频率为基......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-2-playwright的API及其他知识
    1.简介上一篇宏哥已经将Python+Playwright的环境搭建好了,而且也简单的演示了一下三款浏览器的启动和关闭,是不是很简单啊。今天主要是把一篇的中的代码进行一次详细的注释,然后说一下playwright的API和其他相关知识点。那么首先将上一篇中的代码进行一下详细的解释。2.代码解释2.......
  • C++ 运算符
     运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供了以下类型的运算符:算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。ht......