首页 > 编程语言 >C++中函数定义和函数声明的区别

C++中函数定义和函数声明的区别

时间:2024-11-10 22:08:01浏览次数:5  
标签:index const 函数 C++ 参数 声明 定义

这个编译错误提示:

Parameter 'index' is const-qualified in the function declaration; const-qualification of parameters only has an effect in function definitions

意思是,在函数声明(声明函数的原型)中,const 修饰符对参数 index 没有实际效果。const 仅在 函数定义 中有意义,而在 函数声明 中,它不会起到任何作用。

解释

  • 函数声明 是告诉编译器函数的名称、参数类型、返回类型等信息,但它并不提供函数的实际实现。通常出现在头文件中。
  • 函数定义 是函数的具体实现,它提供了函数体和实际逻辑。

问题原因

在函数声明中加 const 对参数没有实际影响,因为在声明时,编译器并不会关心参数是否应该是 const,它只关心函数的接口。const 参数的作用是为了在函数定义时确保该参数在函数内部不可修改。因此,const 只对函数 定义 中的参数有效。

例子

错误示例:

// 这是函数声明
void GetRegionStayData(const int index); // 在声明中加了 const

// 错误:const 参数在声明中没有作用

正确示例:

// 函数声明,不加 const
void GetRegionStayData(int index);

// 函数定义加 const 参数
void GetRegionStayData(const int index) {
    // 这里 index 被声明为 const,意味着它在函数内部不可修改
}

总结

  • 在声明时const 修饰符对参数不起作用,函数声明时可以省略 const,然后在定义时加上 const 来确保函数内部参数不可修改。
  • 在定义时const 参数有效,表示参数在函数体内是只读的。

标签:index,const,函数,C++,参数,声明,定义
From: https://www.cnblogs.com/chentiao/p/18538638

相关文章

  • C / C++ 整数类型转换规则与示例
    在C语言编程中,不同类型之间的转换是非常常见的事情,尤其是整数类型之间的转换,比如从较短类型到较长类型的转换、从有符号类型到无符号类型的转换等。这些转换看似简单,但如果不理解它们背后的机制,可能会导致一些隐蔽的bug。本文将深入探讨整数类型转换的规则和过程,并通过实例帮助大......
  • 编程语言哪家强?对比C,C++,Java等语言的区别
    文章目录开始主题前的一些问题语言举例汇编语言C语言C语言比起汇编多了什么东西?编译器的作用是?C++语言C++语言比C语言多了什么?(推荐《深度探索C++对象模型》)C++有什么编程范式?C++语言特性分别是怎样实现?C++编译器的准则与virtual机制?C++的virtual机制如何实现的?跨平台......
  • C++中clang tidy静态变量检查:Constructor does not initialize these fields
    这条警告通常表示在一个类的构造函数中,某些成员变量(如object和th_cfg)没有被显式初始化。编译器或静态分析工具(例如clang-tidy)可能会给出这样的警告,以帮助开发者避免潜在的未定义行为。可能原因缺少初始化:构造函数中没有对这些成员变量进行初始化,它们的值可能是未定义的。......
  • js内置函数
    Javascript考点内置对象MathMath.<方法名>(参数);Math.abs(x)---绝对功能:返回数字x的绝对值。语法:Math.abs(x)console.log(Math.abs(-5));//输出5console.log(Math.abs(10));//输出10Math.ceil(x)---天花板功能:返回大于或等于x的最小整数(向上取整)。......
  • 告别复杂判断!Python 中实现函数重载的终极技巧
    引言说到函数重载,学过Java的同学应该不陌生,最常用的地方应该就是打印log了,对于不同的参数,调用的是不同的重载函数。那么Python如何实现函数重载呢?重载概念函数重载是指在同一作用域内,允许多个同名函数存在,但它们的参数列表不同。虽然许多编程语言(如Java和C++)支持函数......
  • c++ 回溯算法
    概念回溯算法(Backtracking)是一种用于寻找所有可能解的算法。它通过递归构建解,并在发现当前解不符合条件时进行“回溯”撤销部分选择,直到找到有效的解或没有更多可能性时停止。回溯算法常用于求解组合、排列、子集、图的遍历等问题。基本思想选择:在某个阶段做出一个选择。......
  • JavaScript(JS)函数的使用(二)
    12、函数函数名相同时后面的函数覆盖前面的函数;在JS中实参的个数和形参的个数可以不一致;如果形参过多,会自动填上undefined;如果实参过多,多余的实参会被忽略;函数遇到return就不向下执行,函数的结束用return。1.1函数的声明与调用<script>functionwriteText()......
  • C++中string字符串的基础操作,学习
    string字符串常用函数substring()string.length()&&string.size()string.find()string.replace()string.substr()string初始化和声明#include<bits/stdc++.h>usingnamespacestd; intmain(){stringstr1;//空字符串stringstr2="hello,w......
  • 【优化求解】蚁群算法ACO求解经济损失的航班延误恢复优化问题(目标函数:航班延误成本最
    ......
  • C++实现命令行文本计数统计程序
    附上一位博主写的关于git的使用(个人感觉非常完整,对新手很友好):Git及Tortoisegit下载安装及使用详细配置过程_tortoisegit下载远程代码-CSDN博客 Gitee地址:https://gitee.com/wnmdsqwnhkmc/second-assignment注:本文并不包含主函数,完整代码请移步Gitee路径:[项目>>ConsoleAppl......