(1)、重载,覆盖和隐藏的区别;

重载主要是函数的重载,函数名相同,返回类型相同,但是函数形参不同,被调用时,根据函数形参决定调用原函数还是重载函数。

覆盖主要用在继承多态中,函数前加virtual关键字,子类继承了父类的某个虚函数,利用父指针调用时,子类的虚函数将父类的虚函数覆盖。

隐藏是指派生类的函数把基类的函数隐藏起来了。有两种情况:a.派生类与基类的函数名相同,返回类型相同,但是形参不同,则不论函数前面是否有virtual,基类的函数都被隐藏。b.派生类与基类的函数完全相同,但是基类没有virtual关键字,基类函数被隐藏。

(2)、指针和引用的区别;

指针是存储地址的一个变量,引用是变量的一个别名(在内存中占同一块内存)。主要区别是作为函数形参时指针与引用的区别:

a.如果函数传递的是指针时,其实赋给形参的只是实参值的拷贝,此时拷贝地址与实参地址是不一样的,但是指针指向的内容是一样的,所以函数调用结束后,指针的地址不能改变,但是可以改变指针指向的内容。如果想要改变指针的值,可以使用二级指针或者指针的引用。

b.如果函数传递的是引用,则相当于传递就是实参本身,函数调用结束后,对引用变量的改变跟对实参变量的改变一毛一样。

(3)、static作用

Static对函数、全局变量、局部变量的作用。

Static作用:限定作用域(隐藏)、存储方式不同(导致生命周期不同)、只初始化一次(默认初始化为0)

Static函数与普通函数的区别:作用域不同。Static函数只在本文件中有效,普通函数可以被同一源文件的其他文件调用。

Static全局变量与普通全局变量的区别:首先,存储方式都相同,都是存储在静态数据区(堆);其次,作用范围不同。普通全局变量在同一源程序的其他源文件中均有效,但是static全局变量只对定义它的源文件有效。

Static局部变量与普通局部变量的区别:首先作用域没变,只在定义该变量的函数体内有效;其次,存储方式发生改变,导致其生命周期不同。普通局部变量是存储在栈中的,函数结束后,操作系统自动释放该栈,static局部变量是存储在静态数据存储区堆中。

(4)、const作用;

Const意味着只读,你不能修改它。

本质:const在谁后面谁就不可修改,const在最前面则将其后移一位即可,二者等效

const int a;   //a是一个常整型变量

int const a;    //a是一个常整型变量

const int *a;    //a是一个指向常整型的指针,整型数不能改变,但是指针可以改变

int * const a;   //a是一个指向整形的常指针,整型数可以改变,但是指针不能改变

int const * a const;   //a是一个指向常整型的常指针

c++中常见概念、关键字等的区别的更多相关文章

  1. javascript中常见undefined与defined的区别

    在JavaScript中相信“undefined”与“defined”对大家来说都肯定不陌生,但是又不是很清楚它们的区别,先看两个demo我们再说, 例1. console.log(parms); / ...

  2. 简析--Java中常见的一些关键字的解析

    在Java开发中我们经常会用到一些关键字,关键字的定义很有意思"Java事先定义好的,具有特殊含义的单词",那么我们怎么来用好关键字呢?下面我们对一些常见的关键字进行分析和比较; ...

  3. PHP 面向对象中常见关键字使用(final、static、const和instanceof)

    PHP 面向对象中常见关键字的使用: 1.final :final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性. 作用: 使用final标识的类,不能被继承. 在类中使用fin ...

  4. php中的self关键字和this关键字的区别和联系

    php中的self关键字和this关键字的区别和联系 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行PHP的高级编程 ...

  5. 在C#中interface与abstract class的区别

    1)在继承抽象类时,必须覆盖该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值,这一点与接口相同. 2)当父类已有实际功能的方法时,该方 ...

  6. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  7. JavaScript中常见数据结构

    数据结构 栈:一种遵从先进后出 (LIFO) 原则的有序集合:新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底. 队列:与上相反,一种遵循先进 ...

  8. 工作中常见的hive语句总结

    hive的启动: 1.启动hadoop2.开启 metastore 在开启 hiveserver2服务nohup hive --service metastore >> log.out 2 ...

  9. zz剖析为什么在多核多线程程序中要慎用volatile关键字?

    [摘要]编译器保证volatile自己的读写有序,但由于optimization和多线程可以和非volatile读写interleave,也就是不原子,也就是没有用.C++11 supposed会支持 ...

随机推荐

  1. C#深度学习の----深拷贝与浅拷贝

    本人在进行编程的时候遇到一个问题,要对一个绑定的依赖属性进行赋值,改变属性中的某一部分,绑定的目标上的所有值都发生了变化,着并不是我想要的,由此引出深浅拷贝的问题.(请加群交流:435226676) ...

  2. [NOIP2018]赛道修建

    嘟嘟嘟 因为一些知道的人所知道的,不知道的人所不知道的原因,我来改写今年的NOIP了. 现在看这题,心中满是疑问:我当时是多么的zz,这种水题为啥没做出来-- 不管了,说正事. 先考虑部分分. 1.\ ...

  3. go标准库的学习-encoding/xml

    参考:https://studygolang.com/pkgdoc 导入方式: import "encoding/xml" 实现的简单的理解XML命名空间的XML 1.0编译器 f ...

  4. leetcode 20. Valid Parentheses 、32. Longest Valid Parentheses 、

    20. Valid Parentheses 错误解法: "[])"就会报错,没考虑到出现')'.']'.'}'时,stack为空的情况,这种情况也无法匹配 class Soluti ...

  5. 栈(stack)信息

    栈在JVM虚拟机中是线程的一块私有空间,比如存储函数的调用信息.局部变量等 特性 先进后出和后进先出即FIFO 借用网络的一个图,感觉看完就可以了解了 最先调用的函数压入栈低,最后压入得函数在栈顶,函 ...

  6. Android 百度sdk5.0定位

    在开发中可能 会用到诸如“定位出当前所在城市,所在位置的经纬度”等功能.一次性的定位肯能定位不成功,可能经纬度未读出来,也可能是地址信息或者城市信息未读出来.此时就需对定位后拿到的信息做判断,加入没有 ...

  7. jdk和cglib简单理解

    之前使用cglib的时候不需要将classLoader作为参数传入,但动态代理却要,带着这个疑惑进入这个方法: Proxy.newProxyInstance(classLoader, interfac ...

  8. Android自动化测试之Monkeyrunner使用方法及实例

    目前Android SDK里自带的现成的测试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但其实是完完全全不同的两个工具,应用在不同的测试领域.总的来说,monkey ...

  9. P5204 [USACO19JAN]Train Tracking 2

    P5204 [USACO19JAN]Train Tracking 2 毒毒题,对着嘤文题解看了贼久 首先考虑此题的一个弱化版本:如果输入的所有\(c_i\)相等怎么做 现在假设有\(len\)个数,取 ...

  10. [SHOI2008]cactus仙人掌图[圆方树+树dp]

    题意 求仙人掌的直径(相距最远的两个点的距离). \(n\le 5\times 10^4​\) 分析 建立圆方树,讨论答案路径的 lca 在圆点还是方点. 利用树形 dp 求出每个圆点到 不同子树内圆 ...