是小狐狸啊 2016-06-14 15:18 采纳率: 63.6%
浏览 3036
已采纳

C++ 在形参里加const有什么意义?

/*在形参里加const有什么意义吗?是不是代表这个参数不能在函数里被修改?那为什么在下面的程序中,在print函数输出的还是修改后的对象呢?望大神们指点迷津!谢谢!*/

#include <iostream>
#include"string.h"
using namespace std;

    struct Student{
        char name[20];
        unsigned int id;
        char sex;
        unsigned short age;
    };

    void print(const Student &stu)//加不加const的区别在哪?
    {
        cout<<stu.name<<endl;
        cout<<stu.id<<endl;
        cout<<stu.sex<<endl;
        cout<<stu.age<<endl;
    }

    void set(Student &stu)
    {
        strcpy(stu.name,"Jane Green");
        stu.id=1;
        stu.sex='F';
        stu.age=20;
    }

    int main(int argc, char* argv[])
    {
        Student a={"John Smith",2,'M',21};
        set(a);
        print(a);
        return 0;
    }
  • 写回答

4条回答 默认 最新

  • 无语_ 2016-06-14 16:10
    关注

    你说对了一半,具体说的是不能在你在该变量前加了const的函数内被修改,你const加在输出函数上,又不是在set函数里,当然可以被修改啊,其实你想的是另外一种东西,const常量定义,比如const int N=10,这个确实在任何地方都不可以修改,把const引用参数和const常量定义搞清楚就好

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用