首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

引用概念 ---- C++ 对 C 扩充 : 引用 ( Reference ) 概念 , C++ 在 C 的基础上进行的扩充 , 在 C 语言中没有引用的 ; 引用本质 : 引用的本质就是为一个变量指定一个别名..., 这个变量必须在声明的时候指定 ; //引用相当于常量指针 , 必须在声明的时候就初始化 , 声明完毕后初始化无效的 , 编译执行会报错 //错误示例 , 引用声明后必须马上初始化 int a =... 变量名称 的一个别名 ) 编译实现 : 编译引用实现为 int * const b 指针 , 其指针本身常量 , 即存储的地址不可变的 , 指针指向的内容可变的 ; ( 既然引用是一个...; 这里注意 , 不同通过引用进行修改 , 但是可以通过变量名称 a 进行修改 ; ⑤ 作用及意义 : 使用 引用数据类型 作为 函数参数 , 如果不需要在 函数中 修改该引用变量的值 ( 指针指向的数据的值...语言中 , 如果要让函数参数可以将结果返回 , 则必须使用指针作为参数 ; C++ 中的引用参数 : C++ 在 C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数的情况 ,

1.1K10

C++ const常量对象、常量成员函数和常引用

这里有两个需要注意的点: 在常量成员函数中不能修改成员变量的值(静态成员变量除外); 也不能调用同类的 非 常量成员函数静态成员函数除外)。...obj.GetValue; // OK,常量对象上可以执行常量成员函数 return 0; } ---- — 3 — 常量成员函数重载 两个成员函数,名字和参数表都一样,但是一个...对象作为函数参数时,生产该对象参数需要调用复制构造函数的,这样效率就比较低。用指针作为参数,代码又不好看,如何解决呢?...可以用对象的引用作为参数,防止引发复制构造函数,如: class Sample { ... }; void Func(Sample & o) // 对象的引用作为参数 { ... }...可以用对象的常引用作为参数,如: class Sample { ... }; void Func(const Sample & o) // 对象的常引用作为参数 { ... } 这样函数中就能确保不会出现无意中更改

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

C++静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

一、静态成员函数简介 1、静态成员函数概念 静态成员函数归属 : 在 C++ 类中 , 静态成员函数 一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ; 静态成员函数调用不依赖于对象..., 也不能在 静态成员函数 中访问 普通的 成员变量 和 成员函数 ; 2、静态成员函数声明 静态成员函数声明 : 使用 static 关键字 修饰 成员函数 , 就可以将 普通的成员函数 转为 静态成员函数...========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ========== 二、代码示例 - 静态成员函数 ---- 下面的代码 , 在 之前 的 静态成员变量 示例代码的基础上...”的非法引用 " ; static void fun() { // 静态成员函数 中 访问非静态成员会报错 // error C2597: 对非静态成员“Student::m_age”的非法引用...中 访问非静态成员会报错 // error C2597: 对非静态成员“Student::m_age”的非法引用 //m_age = 10; cout << "静态成员函数被调用 : number

27620

C++ 引用引用作为函数参数

对一个数据建立一个“引用”,他的作用是为一个变量起一个别名。这是C++对C语言的一个重要补充。...经过声明后ba别名,b与a代表的同一个变量,占内存中同一个存储单元,具有同一地址。 注意&符号作为取地址符合作为引用声明符的区别,在上述程序中的第2行,&在数据类型后,为引用声明符。...(有一个例外,引用作为函数参数时,不需要初始化) (2)在声明一个引用后,不能再使之作为另一变量的引用。 (3)不能建立引用数组。...引用的作用: C++加入了在C语言的基础加入了引用机制,那么引用到底有什么用呢?不会只是为了给函数起一个小名吧?显然不是,引用最用要的意义在于作为函数参数,以扩充函数传递参数的能力。它是如何实现的?...这要从C语言参数传递开始说起: 我们知道,C语言在调用函数时,传参主要有两种形式: (1)变量名作为实参和形参 这种方式传给形参的变量的值,传递单向的。

2K40

C++C++ 引用详解 ① ( 变量的本质 - 引入 “ 引用 “ 概念 | 引用语法简介 | 引用函数参数 | 复杂类型引用函数参数 )

一、变量的本质 - 引入 " 引用 " 概念 " 引用 " 语法 C++ 语言中 特有的 , 在 C 语言中没有 引用 这个概念的 ; 1、变量的本质 - 内存别名 分析 引用 之前 , 先回顾下...这里有一种特殊情况 , 在声明时可以不进行初始化 , " 引用 " 做 函数 形参 时 , 可以不进行初始化 ; 使用 引用 作为 函数参数 , 与 一级指针 效果相同 , 并且用起来比较简单 , 不需要操作指针...) 在下面的代码中 , 使用引用作为函数参数 , 也实现了变量交换 ; C++ 中的引用使用非常简单 , 没有使用指针进行操作 ; 在使用引用时 , 可以看到 引用的效果 , 实际上等同于一级指针 ;...: 这种方式传递的 结构体 指针 , 实际上指针的副本 , 几乎不消耗性能 ; 参数访问 : 传入的 指针 参数函数中 使用 -> 访问结构体成员 ; 参数修改 : 通过指针 修改该参数 ,...第三种方式 , 传递结构体 引用 , 函数传递 : 这种方式传递的 结构体 引用 , 引用只是变量的一个别名 , 几乎不消耗性能 ; 参数访问 : 传入的 引用 参数函数中 使用 .

61921

C++入门】缺省参数函数重载与引用

缺省参数 1.1 缺省参数概念 缺省参数声明或定义函数时为函数参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。...缺省值必须常量或者全局变量; C语言不支持(编译不支持)缺省参数; 1.2 缺省参数分类 全缺省参数 void Func(int a = 10, int b = 20, int c = 30) {...:函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。...而C++通过函数修饰规则来区分同名的函数,只要参数不同,修饰出来的名字就不一样,就支持了重载。...; 有多级指针,但是没有多级引用; 访问实体方式不同,指针需要显式解引用引用编译自己处理; 引用比指针使用起来相对更安全; 4.结语 以上就是C++中缺省参数函数重载以及引用的所有内容啦 ~,缺省参数函数重载以及引用的出现是为了补充

9510

C++】命名空间&缺省参数&函数重载&引用&内联函数

cout << a<< endl<< &a << endl; return 0; } 5.缺省参数(缺省==不省==写上==默认) 缺省参数指在声明和定义函数的时候为函数参数设定一个默认值...} 这样写简直为难编译了!!...如果这个中间件程序C++写的,但是整体的程序时用C语言写的,虽然在编译成二进制的指令的时候,C和C语言都没太大差异(因为此时已经经历了各自编译的编译),但是由于C语言和C++函数名修饰规则,整体程序在找中间件程序...基石:C++兼容C的语法,C++知道C语言的函数名规则,所以在有C和C++函数名规则冲突的时候,在C++程序中使用extern "C" +函数声明  ,就可以解决这个问题. 6-1-2-3.extern...但是如果传值返回:调用了Add(5,7),还是3 或者把c定义在static,静态常量区上: 越界不一定报错: 1.越界读基本不报错,因为编译检查不出来 2.越界写,可能报错,而且抽查,

79030

C++声明和成员函数定义 | 引用多个成员对象

C++声明和成员函数定义的分离 在C++中,一般做法将类的声明放在指定的头文件中,程序员如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,以减少工 作量,提高编程的效率。 ...由于在头文件中包含了类的声明,因此在程序中就 可以用该类来定义对象,由于在类体中包含了对成员函数声明,在程序中就可以调用这些对象的公用成员函数。...在实际C++开发中,并不是将一个类声明做成一个头文件,而是将若干个常用的功能相近的类声明集中在一起,形成类库。...C++类库包括两个组成部分: 类声明头文件 已经过编译的成员函数的定义,它是目标文件。 案例:C++引用多个对象的成员。...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C++声明和成员函数定义 | 引用多个成员对象 更多案例可以go公众号:C语言入门到精通

1.8K83

C++C++ 引用详解 ② ( 引用的意义 | 引用本质分析 | 引用常量特征 | 引用所占内存空间与指针相同 | 引用C++ 编译实现 | 引用编译时会自动翻译为常量指针 )

; 综合上面的三种特点 , C++ 语言编译 中 , 引用的本质 : 类型* const 指针名称; 指针 ; 引用C++ 语言内部 常量指针 , 下面 C++ 语言的 " 引用 " 引用类型...& 引用名称 等同于 下面的 C 语言的 " 常量指针 " 指针类型* const 指针名称 C++ 语言中的 引用 , 其在 编译中的实现 就是 " 常量指针 " , 因此 引用 占用的内存空间与...; *a = *b; *b = c; } 3、引用与指针做形参分析 在向 void swap(int* a, int* b) 函数 , 传入参数时 , 如果 指针做参数 , 传入的参数必须地址..., 需要开发者手动使用 取地址符 & 获取变量地址 , 传递给 函数 做实参 ; 在向 void swap(int& a, int& b) 函数 , 传入参数时 , 如果 引用参数 , 开发者 编写代码时..., C++ 编译遇到引用 , 还是需要将 引用 还原为 C 语言中的 取地址 传入函数 , 在函数内部使用指针访问实参 ;

24520

C++C++ 引用详解 ④ ( 函数返回 静态变量 全局变量 的 引用 指针 )

一、函数返回 静态变量 / 全局变量 的 引用 / 指针 1、函数返回局部变量引用或指针无意义 上一篇博客 【C++C++ 引用详解 ③ ( 函数返回值不能 “ 局部变量 “ 的引用或指针 | 函数内的...“ 局部变量 “ 的引用或指针做函数返回值无意义 ) 得出如下结论 : 函数的返回值 “ 局部变量 “ 的 引用 或 指针 时 , 无意义的 ; 函数 执行完毕后 , 该 函数对应的 栈内存 会被回收..., 相应的 局部变量 地址 也有没有了意义 , 此时 , 再持有一个 函数返回的 没有意义的 引用 / 指针 , 取出的值随机无意义的值 ; 2、函数返回静态变量/全局变量的引用或指针 函数 返回的..." 静态变量 " 或 " 全局变量 " 的 引用 / 指针 时 , 可以的 ; 如果 函数 的 返回值 静态变量 或 全局变量 的引用 , 这两种变量 一旦分配内存后 , 在整个程序的生命周期中...; 使用 引用 接收 fun2 函数返回的引用 , 获取的静态变量的引用地址 , 该引用对应的内存一直有效的 , 因此可以通过该引用获取到内存中正确的 静态变量值 ; 代码示例 : // 导入标准

16330

C++引用函数参数 | 传送变量的别名

C++引用函数参数 C++之所以增加引用类型,主要是把它作为函数参数,以扩充函数传递数据的功能。  小林在之前的推文中介绍过函数参数传递的两种情况。...传递变量的指针,形参指针变量,实参一个变量的地址,调用函数时,形参指向 实参变量单元。...C++的这种虚实结合的方法仍然值传递方式,只是实参的值变量的地址而已,C++提供了向函数传递数据的第3种方法:传送变量的别名。 经典案例:C++实现传送变量的别名。... &num2);//函数声明    int i,j;//定义整型变量    i=4;//赋初值    j=7;//赋初值    swap_Number(i,j);//调用swap函数    cout<<...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C++引用函数参数 | 传送变量的别名 更多案例可以go公众号:C语言入门到精通

1.4K88

C++引用函数基础:内存地址、调用方法及声明

C++引用获取内存地址和值在上一页的示例中,我们使用了指针变量来获取变量的内存地址(与引用运算符 & 一起使用)。...在使用解引用运算符时,要遵循一些注意事项,以避免程序崩溃或意外结果。C++ 函数函数概述函数一组用于执行特定任务的封装代码块。它们可以提高代码的可重用性、可读性和可维护性。...在 C++ 中,函数参数默认输入参数。要声明输出参数或输入输出参数,需要使用引用或指针。函数返回值函数可以返回一个值给调用者。...要调用该函数并获取返回值,可以使用以下代码:int result = square(5);cout << result << endl; // 输出 25函数声明和定义函数声明告诉编译函数的名称、返回值类型和参数列表...总结函数 C++ 中重要的编程概念,它们可以提高代码的可重用性、可读性和可维护性。通过理解函数声明、定义、调用和参数传递等概念,您可以编写更简洁、更有效的 C++ 程序。

5700

C++核心准则编译边学-F.17 输入输出参数传递非常量引用

F.17: For "in-out" parameters, pass by reference to non-const(输入/输出参数传递非常量引用) 译者注:in-out指的是向函数传递输入信息的同时又从函数获取输出信息的参数...That can in itself be a problem and a source of errors: T&类型参数可以向函数传递信息也可以从函数获取信息。因此T&可以作为输入/输出参数使用。...(但是如果运用不当,)它本身可能就是一个问题并且错误的起因。...(中等)((基本准则))当有函数将某引用视为非常量参数但又不去写它们的时候,报警。 译者注:如果只是用于输入信息,应该使用传值或者const类型。...(简单)((基本准则))当通过引用传递的非常量参数被移动的时候报警。 译者注:非常量参数意味着也会用于输出信息,如果内容被移动则无法继续使用。

42410

C++】友元函数 ( 友元函数简介 | 友元函数声明 | 友元函数语法 | 友元函数声明不受访问控制限制 | 友元函数参数要求 )

一、友元函数简介 在 C++ 语言中 , " 友元函数 " 与 类 相关联的函数 , " 友元函数 " 不是类的成员函数 , 但是可以访问类的 private 私有成员 和 protected 保护成员...friend returnType functionName(arguments); }; returnType : 友元函数 的 返回值 ; functionName : ...友元函数函数名 ; arguments : 友元函数参数列表 ; 2、友元函数声明不受访问控制限制 " 友元函数 " 的 声明 , 不受类的访问控制限制 , 可以在任何地方定义 , 如...: 在 private: , protected: , public: , 下声明 友元函数 , 并不影响到 友元函数 的使用 ; 只要 声明了 " 友元函数 " , 不管在什么位置声明 , 都可以正常通过该友元函数...访问 类中的成员 ; 3、友元函数参数要求 " 友元函数 " 中 , 需要有一个参数 类对象的 指针 ; 如下 Student 类的友元函数 , 需要有一个参数 Student 类对象指针 , 可以访问对象

28020

C++函数 指针类型参数引用类型参数 对比 ( 修改外部变量需要传入的参数要求 | 参数作返回值 )

如果要在函数中修改 N 维指针指向 : ① 使用指针作为参数 : 必须传入 N + 1 维 ( 及以上 ) 指针参数 , 才可以修改 N 维指针的指向 ; ② 使用引用作为参数 : 可以传入 N 维指针的引用作为参数...参数使用语言环境 : 引用类型参数只能在 C++ 环境中使用 , 指针类型参数可以用于 C / C++ 两种语言环境中 , 因此很多基础库 如 FFMPEG , OpenSL ES 等使用的都是指针类型参数...C++ 中的引用参数 : C++ 在 C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数的情况 , 使参数具有返回结果的能力 ; 3 ....【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 ) IV ....引用作为参数和返回值 ---- 引用作为参数和返回值 : 如果引用作为参数 , 修改 N 维指针指向的地址 , 那么需要传入 N 维指针的引用即可 ,在函数中修改该引用 , 即可修改外部的被引用的变量

2.1K20

C++复习笔记——C++ 关键字

extern extern(外部的)声明变量或函数为外部链接,即该变量或函数名在其它文件中可见。被其修饰的变量(外部变量)静态分配空间的,即程序开始时分配,结束时释放。...依赖于一个模板参数,就是说:模板参数在某种程度上包含这个name。当模板参数使编译在指认一个类型时产生了误解。 class class(类) C++ 面向对象设计的基础。...在函数声明与定义时都要加上const,放在函数参数列表的最后一个括号后。...常量指针被转化成非常量指针,并且仍然指向原来的对象;常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。...在 C++ 类的成员变量被声明为static(称为静态成员变量),意味着它被该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;而类的静态成员函数也只能访问静态成员

1.3K30

C++必知必会之基础知识-常用关键字(1)

修饰变量说明该变量不可以被改变 修饰指针分为指向常量的指针和指针常量 修饰引用常量引用,经常用于形参类型,即避免了拷贝,又避免了函数对值的修改 修饰成员函数说明该成员函数内不能修改成员变量 //类 class...* const a; // 指针常量 指针不可修改 const int* const; // 常量指针常量 指针和指向的常量都不可修改 // 引用 引用a不能被修改...在函数内部使用static关键字声明的变量静态变量,它在程序的生命周期内保持其值,不会在每次函数调用时重新初始化。静态变量存储在静态数据区,而不是栈上。...this指针在成员函数内部自动创建,可以在成员函数中使用,用于访问当前对象的成员变量和成员函数。 this指针一个隐式参数,它并不需要显式地传递,编译会在调用成员函数时自动传递它。...inline内联函数C++中,inline一个关键字,用于对函数进行内联展开。使用inline关键字声明函数被称为内联函数

16840

c++入门】引用详解 | auto的类型推导 | 范围for循环 | nullptr空指针

☁️常引用C++中,常引用是指在函数参数列表或变量声明中使用const关键字来修饰的引用。常引用的作用是限制对被引用对象的修改。...常引用只能引用常量或临时对象,不能引用常量对象。如果需要引用常量对象并且不允许修改该对象的值,可以使用const修饰符来声明常量对象。...☁️auto不能推导的场景 ⭐函数参数 由于函数参数的类型函数调用时确定的,编译无法在编译时推导出参数的类型。...void foo(auto x); // 错误,auto 不能用于函数参数的类型声明 ⭐模板参数 模板参数的类型在实例化时确定的,编译无法在编译时推导出模板参数的类型。...class MyClass { auto x; // 错误,auto 不能用于类成员变量的类型声明 }; ⭐静态变量 静态变量的类型在编译时确定的,编译无法在编译时推导出静态变量的类型。

11910

C++C++ 引用详解 ③ ( 函数返回值不能 “ 局部变量 “ 的引用或指针 | 函数内的 “ 局部变量 “ 的引用或指针做函数返回值无意义 )

一、函数返回值不能 " 局部变量 " 的引用或指针 1、引用通常做右值 之前使用 引用 时 , 都是作为 右值 使用 , 引用只在 声明 的 同时 进行初始化时 , 才作为左值 , // 定义变量 a...int a = 10; // 定义变量 a 的引用 b int& b = a; 引用 声明 并 初始化 之后 , 就没有当过右值 , 这是因为 引用 的本质 指针常量 , 其本身不可被更改 ;...2、函数返回值特点 函数 的 返回值 几乎很少 引用 或 指针 ; 函数 的 计算结果 经常是借用 参数中的 地址 / 引用 进行返回的 , 函数 的 返回值 一般返回一个 int 类型的值 , 如果...引用 和 指针 作为 传入的 参数 ; 在 main 函数中 , 调用 函数 , 创建一个 变量 , 将 变量 的 地址 / 引用 传入 函数 , 在函数中通过 指针符号 或者 引用 , 直接修改传入的实参...如果 外部的 main 函数中的 变量 的 地址 / 引用 , 那么 肯定是从 参数中 传入的 , 那么这个 地址 / 引用 就不需要返回 , 函数内部修改 , 直接体现在了外部的变量中 ; 因此

28020
领券