注:同一个命名域中不能定义同名的变量 //1.普通的命 名空间 namespace N1 // N1为命名空间的名称 //命名空间中的内容,既可以定义变量,也可以定义函数 int a; int Add...2、引用特性 1、引用在定义时必须初始化。 2、一个变量可以有多个引用。 3、引用一旦引用一个实体,再不能引用其他实体。...2.引用在定义时必须初始化,指针没有要求 3.引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体 4.没有NULL引用,但有NULL指针 5.在sizeof...0) #endif #endif 可以看到NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量。...在C++98中,字面常量0既可以是一个 整形数字,也可以是无类型的指针(void*)常量,但是编译器默认情况下将其看成是一个 整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。
☁️常引用 在C++中,常引用是指在函数参数列表或变量声明中使用const关键字来修饰的引用。常引用的作用是限制对被引用对象的修改。...常引用不允许对被引用对象进行修改,即不能通过常引用修改被引用对象的值。 常引用可以接受非常量对象、常量对象和临时对象作为参数。 常引用可以提高程序的效率,因为常引用不需要创建临时变量。...引用在定义时必须初始化,指针没有要求 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体 没有NULL引用,但有NULL指针 在sizeof中含义不同:引用结果为引用类型的大小...不论采取何种定义,在使用空值的指针时,都不可避免的会遇到一些麻烦,比如: 程序本意是想通过f(NULL)调用指针版本的f(int*)函数,但是由于NULL被定义成0,因此与程序的初衷相悖。...NULL 被定义为一个整数常量 0。在 C++ 中,也可以使用 NULL 来表示空指针,但更推荐使用更加类型安全的 nullptr。
【c++】内联函数 1.1 背景 我们在使用宏的时候,需要特别注意,因为宏是直接替换的,由于运算符优先级不同,很容易导致计算的失误,在c++中,我们很少使用宏,更多的使用内联函数 1.2 内联函数的概念...【c++】引用 2.1 引用的概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。...{ TestRef(); } 注意:引用类型必须和引用实体是同种类型的 2.2 引用特性 引用在定义时必须初始化 一个变量可以有多个引用 引用一旦引用一个实体,再不能引用其他实体 void TestRef...引用在定义时必须初始化,指针没有要求 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体 没有NULL引用,但有NULL指针 在sizeof中含义不同:引用结果为引用类型的大小...【c++】函数重载 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载 比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。
缺省值必须是常量或者全局变量 4. C语言不支持(编译器不支持) 5. 函数重载 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重 载了。...引用在定义时必须初始化 2. 一个变量可以有多个引用 3....引用概念上定义一个变量的别名,指针存储一个变量地址。 2. 引用在定义时必须初始化,指针没有要求 3....在同一行定义多个变量 当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译 器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量 void TestAuto(...void *)0) #endif #endif 可以看到,NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量。
数据类型: 常量:常量包括字面常量、直接常量和符号常量; 变量:C语言规定标志符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或者下划线;必须压迫先定义后使用;每一个变量被定义以确定类型后...h文件是头文件所用的后缀。 3、如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。...局部变量和全局变量: (一)局部变量在一个函数内部定义的变量是内部变量,它只是在本函数范围内的有效,主函数也不能使用其它函数中定义的变量;不同函数中可以使用相同的名字的变量,他们代表不同的对象,互不干扰...在多文件中,也可以采用extern声明的办法进行外部变量声明。...有时希望某些局部变量只限于被本文件引用,而不能被其他文件引用,这时就可以采用在定义外部变量时外加一个static,这在程序模块化设计中加强了通用性。
2、一个变量可以有多个引用 3、引用一旦引用一个实体,再也不能引用其他实体。...当然是通过计算机编译器的底层汇编来看啊。 引用和指针的不同点: 1、引用概念上的定义是变量的别名,指针存储一个变量的地址。 2、引用在定义的时候就必须初始化,指针没有要求。...3、引用在初始化时引用一个实体之后,就不能引用其他实体,而指针可以在任何时候指向任何一个同类型的实体。 4、没有NULL引用,但是有NULL指针。...宏的优点和缺点在上述的图片中已经很清楚了,那么有没有什么办法能够在这些的优点上进行对缺点的改变?...C++中的可以代替宏的方案 1、常量定义 换成const enum 2、短小函数定义 换成内联函数 8、auto关键字(C++11) 随着程序的复杂化,类型的使用也将会是多样化。
什么是指针? 指针是C++中的一种数据类型,指针变量存储了一个内存地址,该地址指向某个变量或者对象。指针可以用来访问和修改内存中的数据,同时也可以通过指针来传递参数和返回值。...多态:多态是指同一个消息可以被不同的对象解释执行,即不同的对象对同一消息作出不同的响应。具体来说,多态可以通过虚函数和模板等机制实现。...操作的灵活性 数组名是一个常量指针,不能修改,而指针可以被重新赋值,指向其他对象。因此使用指针比使用数组名更加灵活,可以在运行时动态确定指向的对象。...在C++中,extern关键字用于声明一个已经在别处定义的变量、函数或类的引用,从而允许在一个文件中使用在其他文件中定义的全局变量、函数或类。...例如,如果有一个类的定义在一个.h文件中,那么在多个.cpp文件中可以使用extern关键字来声明这个类的引用,从而可以在这些文件中使用这个类的成员函数。 C++函数调用的过程?
函数重载 说说什么是函数重载 函数重载指的是在同一个作用域中,声明了具有相同函数名的函数,它们的参数列表不同,也就是说参数类型不同,参数个数不同,参数顺序不同,返回值同不同都可以。...而C++在取名的时候,是将函数名和参数类型的首字符结合起来对函数的取名,这样就可以区分函数的不同了。 拓展:说说函数重载、函数重写、函数重定义区分: 在作用域中:函数重载在需要在同一个作用域中。...,有什么好处 引用一般使用在参数和返回值上面。...说一说宏的优缺点,有什么解决办法 宏的优点是增强代码的复用性,比如用宏来定义一个常量,那么在后续的代码中我或许需要多次用到这个常量。还有就是可以提高性能。...0; } 解决办法是使用内联函数和常量定义,比如const、enum来替换。
全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。...指针是一个变量,存储的是一个地址,引用跟原来的变量实质上是同一个东西,是原变量的别名 指针可以有多级,引用只有一级 指针可以为空,引用不能为NULL且在定义时必须初始化 指针在初始化后可以改变指向...,但不是同一个变量,在函数中改变这个变量的指向不影响实参,而引用却可以。...内存泄漏一般是指堆内存的泄漏,也就是程序在运行过程中动态申请的内存空间不再使用后没有及时释放,导致那块内存不能被再次使用。 20、什么函数不能声明为虚函数?构造函数为什么不能为虚函数?...c++引入了智能指针,C++智能指针的本质就是避免悬空指针的产生。 产生原因及解决办法: 野指针:指针变量未及时初始化 => 定义指针变量及时初始化,要么置空。
); printf("%p\n", &ra); } 引用的特性 引用在定义时必须初始化 一个变量可以有多个引用 引用一旦引用一个实体,再不能引用其他实体 举个例子: 下面注释的语句就是没有初始化...引用在定义时必须初始化,指针没有要求 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何 一个同类型实体 没有NULL引用,但有NULL指针 在sizeof中含义不同:引用结果为引用类型的大小...auto简介 在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,大家可思考下为什么?...当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。...指针空值nullptr NULL实际是一个宏,在传统的C头文件(stddef.h)中 NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量 在C++98中,字面常量0既可以是一个整形数字
缺省值必须是常量或者全局变量; C语言不支持(编译器不支持); 上述第二点,为什么只能在函数声明时给缺省值? 因为缺省参数是在调用的阶段使用的。...(这里就浅述一下,至于虚拟地址是什么,特性如何,待写到 地址空间 和 线程 时会详细解释)。 二、函数重载 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。...在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。...的一份拷贝,并不在函数栈帧中;若2, 4, 6组合,函数中变量n的别名(地址)被返回交给外部变量val,那么在函数栈帧销毁的那一刻,val依旧可以找到原函数中n的位置,类似于野指针问题;若1, 4, 6...引用和指针的不同点: 引用概念上定义一个变量的别名,指针存储一个变量地址; 引用在定义时必须初始化,指针没有要求; 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体
按照c语言的定义,比如,1.5是一个浮点数常量,”roger”这是一个字符串常量,而在C语言中(在C++语言中扩展了const的定义,不能完全使用这种理解方式),const并不是一个常量,你可以定义一个...还有一个地方也可以进行证明,在c语言中,case语句里必须是常量,如果const定义的真的被认为是常量的话,那么在switch的case语句中就可以使用它,但是事实并不是这样的,在编译器中做这样的尝试之后...C++作为一种面向对象的语言,可以定义类、成员函数等等是其区别于C语言的一个重大特点,const关键字在类中的使用也是有各种陷阱和容易混淆的地方的,为了配合下面的说明,我们定义一个类Mobile。...总之,在类中,可以使用const限制成员函数对成员变量的修改,并且可以实现成员函数的重载。 下一个问题可能稍微有些颠覆性,怎样看待一个类的const?...,但是const定义不一定是常量(在C语言中),#define定义的内容在C语言中可以使用在数组大小,case语句中,但是const定义不能。
变量与方法成员变量与局部变量的区别有哪些在Java中定义一个不做事且没有参数的构造方法的作用在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?一个类的构造方法的作用是什么?...多态 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法...所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法...在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。 ...理由很简单,方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象。 很多程序设计语言(特别是,C++和Pascal)提供了两种参数传递的方式:值调用和引用调用。
; } 注意:引用类型必须和引用实体是同一类型的 引用特性: 1.引用在定义时必须初始化 2.一个变量可以有多个引用 3.引用一旦引用一个实体,再不能引用其他实体 void TestRef() { int...2.引用在定义时必须初始化,指针没有要求。 3.引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体。 4.没有NULL引用,但有NULL指针。...在同一行定义多个变量 当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译 器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量 。... ((void *)0) #endif #endif 可以看到, NULL 可能被定义为字面常量 0 ,或者被定义为无类型指针 (void*) 的常量 。...在C++98 中,字面常量 0 既可以是一个整形数字,也可以是无类型的指针 (void*) 常量,但是编译器 默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void*
缺省值必须是常量或者全局变量(一般不用全局变量) C语言不支持缺省参数(编译器不支持) 5. 函数重载 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。...引用在定义时必须初始化,指针没有要求(当然最好进行初始化) 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体 没有NULL引用,但有NULL指针 在sizeof...补充:C++中建议用const和枚举enum代替宏定义的常量 从宏的这些优缺点出发,C++又引入了一个新的概念——内联函数。 7.1 概念 那什么是内联函数呢?...在同一行定义多个变量 当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。...所以要想NULL调用第二个函数: 在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量,但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用
Java和C++的区别**我知道很多人没学过C++,但是面试官就是没事喜欢拿咱们Java和C++比呀!没办法!!!就算没学过C++,也要记下来!...**多态**所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法...**从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static...hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。...从另一角度来说,进程属于操作系统的范畴,主要是同一段时间内,可以同时执行一个以上的程序,而线程则是在同一程序内几乎同时执行一个以上的程序段。**30. 线程有哪些基本状态?这些状态是如何定义的?
1 变量的声明和定义有什么区别 变量的定义为变量分配地址和存储空间, 变量的声明不分配地址。一个变量可以在多个地方声明, 但是只在一个地方定义。...全局变量是整个程序都可访问的变量,谁都可以访问,生存期在整个程序从运行到结束(在程序结束时所占内存释放); 而局部变量存在于模块(子程序,函数)中,只有所在模块可以访问,其他模块不可直接访问,模块结束(...21 指针常量与常量指针区别 指针常量是指定义了一个指针,这个指针的值只能在定义时初始化,其他地方不能改变。...的向下兼容性,把C++中的最基本的对象单元规定为class而不是struct,就是为了避免各种兼容性要求的限制 对struct定义的扩展使C语言的代码能够更容易的被移植到C++中 32 C++类内可以定义引用数据成员吗...与重载的范围不同:和重写一样,隐藏函数和被隐藏函数不在同一个类中。 参数的区别:隐藏函数和被隐藏的函数的参数列表可以相同,也可不同,但是函数名肯定要相同。
然而在C++中const修饰的变量可以当作数组下标使用,成为了真正的常量,这就是C++对const的扩展。 C语言中的const:被修饰后不能做左值,可以不初始化,但是之后没有机会再初始化。...不可以当数组的下标,可以通过指针修改。 简单来说,它和普通变量的区别只是不能做左值而已,其他地方都是一样的。 C++中的const:真正的常量。定义的时候必须初始化,可以用作数组的下标。...总结:C中的const叫只读变量,只是无法做左值的变量;C++中的const是真正的常量,但也有可能退化成c语言的常量,默认生成local符号。...只是我们在调用的时候有所不同:调用p时需要*p解引用,b则直接使用就可以。由此我们 推断出:引用在直接使用时是指针解引用。p直接使用则是它自己的地址。...那如果你就是非要引用一个立即数,其实也不是没有办法: constint &b = 10; 即将这个立即数用const修饰一下,就可以了。为什么呢?
,但不能被模块外其他函数访问 在模块内的 static 函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内。...当delete一个对象数组时,delete只删除了一个,需要使用delete[] const 宏定义和const函数的区别 宏在编译时完成替换,直接进行替换,执行起来更快,但是可能会存在一些风险;函数调用在运行时需要跳转到具体调用函数...常量指针和指针常量: 常量指针是一个指针,读成常量的指针,指向一个只读变量。如int const *p或const int *p。 指针常量是一个常量,指针的值可以改变。如int *const p。...引用相关问题 引用是某个变量的别名,因此定义的时候必须初始化,也不能把该引用再改成其他变量的别名。 声明一个引用并没有定义新变量,引用本身不是一种数据类型。也不占用存储空间。...见为什么不能建立引用数组 将引用作为函数的参数时,可以避免对变量或者对象的复制,因此不会调用对象的拷贝构造函数。当不希望传入的引用参数不被改变时,使用const引用。
领取专属 10元无门槛券
手把手带您无忧上云