对于这个函数const int func(const int& a) const声明中,三个const分别是什么意思? 讲得详细点 谢了 请问在 int func1(int value) const...

\u8fd9\u91cc\u7684\u56db\u4e2aconst\u4e2a\u4ee3\u8868\u4ec0\u4e48\u610f\u601d\uff1f\uff1fconst A * const func(const A * const one )

const A * const func(const A * const one )

\u7b2c\u4e00\u4e2aconst\u4fee\u9970A*,\u8868\u660e\u8fd4\u56de\u503c\u662fconst\u578b\u7684\u3002
\u7b2c\u4e8c\u4e2aconst\u4fee\u9970func,\u51fd\u6570\u540d\u5176\u5b9e\u4e5f\u662f\u4e00\u4e2a\u6307\u9488\uff0c\u8fd9\u91cc\u7684const\u5c31\u662f\u4fee\u9970\u8fd9\u4e2a\u6307\u9488\u7684\u3002
\u7b2c\u4e09\u4e2aconst\u662f\u4fee\u9970A*\u5c31\u662f\u8bf4\u8fd9\u4e2a\u6307\u9488\u6307\u5411\u5730\u5740\u4e0d\u53ef\u53d8\u3002
\u7b2c\u56db\u4e2aconst\u662f\u4fee\u9970one\uff0c\u5c31\u662f\u8bf4\u8fd9\u4e2a\u6307\u9488\u6307\u5411\u7684\u5730\u5740\u7684\u5185\u5bb9\u662f\u4e0d\u53ef\u53d8\u7684\uff01

C++\u4e2dconst\u7528\u6cd5\u603b\u7ed3

1. const\u5e38\u91cf\uff0c\u5982const int max = 100;
\u4f18\u70b9\uff1aconst\u5e38\u91cf\u6709\u6570\u636e\u7c7b\u578b\uff0c\u800c\u5b8f\u5e38\u91cf\u6ca1\u6709\u6570\u636e\u7c7b\u578b\u3002\u7f16\u8bd1\u5668\u53ef\u4ee5\u5bf9\u524d\u8005\u8fdb\u884c\u7c7b\u578b\u5b89\u5168\u68c0\u67e5\uff0c\u800c\u5bf9\u540e\u8005\u53ea\u8fdb\u884c\u5b57\u7b26\u66ff\u6362\uff0c\u6ca1\u6709\u7c7b\u578b\u5b89\u5168\u68c0\u67e5\uff0c\u5e76\u4e14\u5728\u5b57\u7b26\u66ff\u6362\u65f6\u53ef\u80fd\u4f1a\u4ea7\u751f\u610f\u6599\u4e0d\u5230\u7684\u9519\u8bef\u3002

2. const \u4fee\u9970\u7c7b\u7684\u6570\u636e\u6210\u5458\u3002 const\u6570\u636e\u6210\u5458\u53ea\u5728\u67d0\u4e2a\u5bf9\u8c61\u751f\u5b58\u671f\u5185\u662f\u5e38\u91cf\uff0c\u800c\u5bf9\u4e8e\u6574\u4e2a\u7c7b\u800c\u8a00\u5374\u662f\u53ef\u53d8\u7684\u3002\u56e0\u4e3a\u7c7b\u53ef\u4ee5\u521b\u5efa\u591a\u4e2a\u5bf9\u8c61\uff0c\u4e0d\u540c\u7684\u5bf9\u8c61\u5176const\u6570\u636e\u6210\u5458\u7684\u503c\u53ef\u4ee5\u4e0d\u540c\u3002\u6240\u4ee5\u4e0d\u80fd\u5728\u7c7b\u58f0\u660e\u4e2d\u521d\u59cb\u5316const\u6570\u636e\u6210\u5458\uff0c\u56e0\u4e3a\u7c7b\u7684\u5bf9\u8c61\u672a\u88ab\u521b\u5efa\u65f6\uff0c\u7f16\u8bd1\u5668\u4e0d\u77e5\u9053const \u6570\u636e\u6210\u5458\u7684\u503c\u662f\u4ec0\u4e48\u3002 const\u6570\u636e\u6210\u5458\u7684\u521d\u59cb\u5316\u53ea\u80fd\u5728\u7c7b\u7684\u6784\u9020\u51fd\u6570\u7684\u521d\u59cb\u5316\u8868\u4e2d\u8fdb\u884c\u3002

3. const\u4fee\u9970\u6307\u9488\u7684\u60c5\u51b5\uff0c\u89c1\u4e0b\u5f0f\uff1a
const int* a = & [1]
int const *a = & [2]
int* const a = & [3]
const int* const a = & [4]
\u53ef\u4ee5\u53c2\u8003\u300aEffective c++\u300bItem21\u4e0a\u7684\u505a\u6cd5\uff0c\u5982\u679cconst\u4f4d\u4e8e\u661f\u53f7\u7684\u5de6\u4fa7\uff0c\u5219const\u5c31\u662f\u7528\u6765\u4fee\u9970\u6307\u9488\u6240\u6307\u5411\u7684\u53d8\u91cf\uff0c\u5373\u6307\u9488\u6307\u5411\u4e3a\u5e38\u91cf\uff1b\u5982\u679cconst\u4f4d\u4e8e\u661f\u53f7\u7684\u53f3\u4fa7\uff0cconst\u5c31\u662f\u4fee\u9970\u6307\u9488\u672c\u8eab\uff0c\u5373\u6307\u9488\u672c\u8eab\u662f\u5e38\u91cf\u3002\u56e0\u6b64\uff0c[1]\u548c[2]\u7684\u60c5\u51b5\u76f8\u540c\uff0c\u90fd\u662f\u6307\u9488\u6240\u6307\u5411\u7684\u5185\u5bb9\u4e3a\u5e38\u91cf\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\u4e0d\u5141\u8bb8\u5bf9\u5185\u5bb9\u8fdb\u884c\u66f4\u6539\u64cd\u4f5c\uff0c\u5982\u4e0d\u80fd*a = 3 \uff1b[3]\u4e3a\u6307\u9488\u672c\u8eab\u662f\u5e38\u91cf\uff0c\u800c\u6307\u9488\u6240\u6307\u5411\u7684\u5185\u5bb9\u4e0d\u662f\u5e38\u91cf\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\u4e0d\u80fd\u5bf9\u6307\u9488\u672c\u8eab\u8fdb\u884c\u66f4\u6539\u64cd\u4f5c\uff0c\u5982a++\u662f\u9519\u8bef\u7684\uff1b[4]\u4e3a\u6307\u9488\u672c\u8eab\u548c\u6307\u5411\u7684\u5185\u5bb9\u5747\u4e3a\u5e38\u91cf\u3002

4. const\u7684\u521d\u59cb\u5316
\u5148\u770b\u4e00\u4e0bconst\u53d8\u91cf\u521d\u59cb\u5316\u7684\u60c5\u51b5
1) \u975e\u6307\u9488const\u5e38\u91cf\u521d\u59cb\u5316\u7684\u60c5\u51b5\uff1aA b;
const A a = b;
2) \u6307\u9488const\u5e38\u91cf\u521d\u59cb\u5316\u7684\u60c5\u51b5\uff1a
A* d = new A();
const A* c = d;
\u6216\u8005\uff1aconst A* c = new A();
3\uff09\u5f15\u7528const\u5e38\u91cf\u521d\u59cb\u5316\u7684\u60c5\u51b5\uff1a
A f;
const A& e = f; // \u8fd9\u6837\u4f5ce\u53ea\u80fd\u8bbf\u95ee\u58f0\u660e\u4e3aconst\u7684\u51fd\u6570\uff0c\u800c\u4e0d\u80fd\u8bbf\u95ee\u4e00\u822c\u7684\u6210\u5458\u51fd\u6570\uff1b

5. const\u5728\u51fd\u6570\u58f0\u660e\u4e2d\u7684\u5e94\u7528 \u5728\u51fd\u6570\u58f0\u660e\u4e2d\uff0cconst \u53ef\u4ee5\u4fee\u9970\u51fd\u6570\u7684\u8fd4\u56de\u503c\uff0c\u6216\u67d0\u4e2a\u53c2\u6570\uff1b\u5bf9\u4e8e\u6210\u5458\u51fd\u6570\uff0c\u8fd8\u53ef\u4ee5\u4fee\u9970\u662f\u6574\u4e2a\u51fd\u6570\u30021\uff09 \u4fee\u9970\u53c2\u6570\u7684const\uff0c\u5982 void fun0(const A* a ); void fun1(const A& a);
\u8c03\u7528\u51fd\u6570\u7684\u65f6\u5019\uff0c\u7528\u76f8\u5e94\u7684\u53d8\u91cf\u521d\u59cb\u5316const\u5e38\u91cf\uff0c\u5219\u5728\u51fd\u6570\u4f53\u4e2d\uff0c\u6309\u7167const\u6240\u4fee\u9970\u7684\u90e8\u5206\u8fdb\u884c\u5e38\u91cf\u5316\uff0c\u5982\u5f62\u53c2\u4e3aconst A* a\uff0c\u5219\u4e0d\u80fd\u5bf9\u4f20\u9012\u8fdb\u6765\u7684\u6307\u9488\u7684\u5185\u5bb9\u8fdb\u884c\u6539\u53d8\uff0c\u4fdd\u62a4\u4e86\u539f\u6307\u9488\u6240\u6307\u5411\u7684\u5185\u5bb9\uff1b\u5982\u5f62\u53c2\u4e3aconst A& a\uff0c\u5219\u4e0d\u80fd\u5bf9\u4f20\u9012\u8fdb\u6765\u7684\u5f15\u7528\u5bf9\u8c61\u8fdb\u884c\u6539\u53d8\uff0c\u4fdd\u62a4\u4e86\u539f\u5bf9\u8c61\u7684\u5c5e\u6027\u3002
[\u6ce8\u610f]\uff1a\u53c2\u6570const\u901a\u5e38\u7528\u4e8e\u53c2\u6570\u4e3a\u6307\u9488\u6216\u5f15\u7528\u7684\u60c5\u51b5\uff0c\u4e14\u53ea\u80fd\u4fee\u9970\u8f93\u5165\u53c2\u6570;\u82e5\u8f93\u5165\u53c2\u6570\u91c7\u7528\u201c\u503c\u4f20\u9012\u201d\u65b9\u5f0f\uff0c\u7531\u4e8e\u51fd\u6570\u5c06\u81ea\u52a8\u4ea7\u751f\u4e34\u65f6\u53d8\u91cf\u7528\u4e8e\u590d\u5236\u8be5\u53c2\u6570\uff0c\u8be5\u53c2\u6570\u672c\u5c31\u4e0d\u9700\u8981\u4fdd\u62a4\uff0c\u6240\u4ee5\u4e0d\u7528const\u4fee\u9970\u3002
[\u603b\u7ed3]\u5bf9\u4e8e\u975e\u5185\u90e8\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\u53c2\u6570\uff0c\u5e94\u8be5\u5c06\u201c\u503c\u4f20\u9012\u201d\u7684\u65b9\u5f0f\u6539\u4e3a\u201cconst\u5f15\u7528\u4f20\u9012\u201d\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u63d0\u9ad8\u6548\u7387\u3002\u4f8b\u5982\uff0c\u5c06void Func(A a)\u6539\u4e3avoid Func(const A &a)
\u5bf9\u4e8e\u5185\u90e8\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\u53c2\u6570\uff0c\u4e0d\u8981\u5c06\u201c\u503c\u4f20\u9012\u201d\u7684\u65b9\u5f0f\u6539\u4e3a\u201cconst\u5f15\u7528\u4f20\u9012\u201d\u3002\u5426\u5219\u65e2\u8fbe\u4e0d\u5230\u63d0\u9ad8\u6548\u7387\u7684\u76ee\u7684\uff0c\u53c8\u964d\u4f4e\u4e86\u51fd\u6570\u7684\u53ef\u7406\u89e3\u6027\u3002\u4f8b\u5982void Func(int x)\u4e0d\u5e94\u8be5\u6539\u4e3avoid Func(const int &x)
2\uff09 \u4fee\u9970\u8fd4\u56de\u503c\u7684const\uff0c\u5982const A fun2( ); const A* fun3( );
\u8fd9\u6837\u58f0\u660e\u4e86\u8fd4\u56de\u503c\u540e\uff0cconst\u6309\u7167"\u4fee\u9970\u539f\u5219"\u8fdb\u884c\u4fee\u9970\uff0c\u8d77\u5230\u76f8\u5e94\u7684\u4fdd\u62a4\u4f5c\u7528\u3002 [\u603b\u7ed3] 1\uff09 \u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u51fd\u6570\u7684\u8fd4\u56de\u503c\u4e3a\u67d0\u4e2a\u5bf9\u8c61\u65f6\uff0c\u5982\u679c\u5c06\u5176\u58f0\u660e\u4e3aconst\u65f6\uff0c\u591a\u7528\u4e8e\u64cd\u4f5c\u7b26\u7684\u91cd\u8f7d\u3002\u901a\u5e38\uff0c\u4e0d\u5efa\u8bae\u7528const\u4fee\u9970\u51fd\u6570\u7684\u8fd4\u56de\u503c\u7c7b\u578b\u4e3a\u67d0\u4e2a\u5bf9\u8c61\u6216\u5bf9\u67d0\u4e2a\u5bf9\u8c61\u5f15\u7528\u7684\u60c5\u51b5\u30022\uff09\u5982\u679c\u7ed9\u91c7\u7528\u201c\u6307\u9488\u4f20\u9012\u201d\u65b9\u5f0f\u7684\u51fd\u6570\u8fd4\u56de\u503c\u52a0const\u4fee\u9970\uff0c\u90a3\u4e48\u51fd\u6570\u8fd4\u56de\u503c\uff08\u5373\u6307\u9488\uff09\u7684\u5185\u5bb9\u4e0d\u80fd\u88ab\u4fee\u6539\uff0c\u8be5\u8fd4\u56de\u503c\u53ea\u80fd\u88ab\u8d4b\u7ed9\u52a0const \u4fee\u9970\u7684\u540c\u7c7b\u578b\u6307\u9488\u3002

6. \u7c7b\u6210\u5458\u51fd\u6570\u4e2dconst\u7684\u4f7f\u7528
\u4e00\u822c\u653e\u5728\u51fd\u6570\u4f53\u540e\uff0c\u5f62\u5982\uff1avoid fun() const;
\u4efb\u4f55\u4e0d\u4f1a\u4fee\u6539\u6570\u636e\u6210\u5458\u7684\u51fd\u6570\u90fd\u56e0\u8be5\u58f0\u660e\u4e3aconst\u7c7b\u578b\u3002\u5982\u679c\u5728\u7f16\u5199const\u6210\u5458\u51fd\u6570\u65f6\uff0c\u4e0d\u614e\u4fee\u6539\u4e86\u6570\u636e\u6210\u5458\uff0c\u6216\u8005\u8c03\u7528\u4e86\u5176\u4ed6\u975econst\u6210\u5458\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u5c06\u62a5\u9519\uff0c\u8fd9\u5927\u5927\u63d0\u9ad8\u4e86\u7a0b\u5e8f\u7684\u5065\u58ee\u6027\u3002

7. \u4f7f\u7528const\u7684\u4e00\u4e9b\u5efa\u8bae
1 \u8981\u5927\u80c6\u7684\u4f7f\u7528const\uff0c\u8fd9\u5c06\u7ed9\u4f60\u5e26\u6765\u65e0\u5c3d\u7684\u76ca\u5904\uff0c\u4f46\u524d\u63d0\u662f\u4f60\u5fc5\u987b\u641e\u6e05\u695a\u539f\u59d4\uff1b
2 \u8981\u907f\u514d\u6700\u4e00\u822c\u7684\u8d4b\u503c\u64cd\u4f5c\u9519\u8bef\uff0c\u5982\u5c06const\u53d8\u91cf\u8d4b\u503c\uff0c\u5177\u4f53\u53ef\u89c1\u601d\u8003\u9898\uff1b
3 \u5728\u53c2\u6570\u4e2d\u4f7f\u7528const\u5e94\u8be5\u4f7f\u7528\u5f15\u7528\u6216\u6307\u9488\uff0c\u800c\u4e0d\u662f\u4e00\u822c\u7684\u5bf9\u8c61\u5b9e\u4f8b\uff0c\u539f\u56e0\u540c\u4e0a\uff1b
4 const\u5728\u6210\u5458\u51fd\u6570\u4e2d\u7684\u4e09\u79cd\u7528\u6cd5\uff08\u53c2\u6570\u3001\u8fd4\u56de\u503c\u3001\u51fd\u6570\uff09\u8981\u5f88\u597d\u7684\u4f7f\u7528\uff1b
5 \u4e0d\u8981\u8f7b\u6613\u7684\u5c06\u51fd\u6570\u7684\u8fd4\u56de\u503c\u7c7b\u578b\u5b9a\u4e3aconst;
6\u9664\u4e86\u91cd\u8f7d\u64cd\u4f5c\u7b26\u5916\u4e00\u822c\u4e0d\u8981\u5c06\u8fd4\u56de\u503c\u7c7b\u578b\u5b9a\u4e3a\u5bf9\u67d0\u4e2a\u5bf9\u8c61\u7684const\u5f15\u7528;


\u53c2\u8003\u8d44\u6599\uff1ahttp://baike.baidu.com/view/1065598.htm#sub5048429
http://zhidao.baidu.com/question/553780522.html?push=category

\u8fd9\u662fc++\u91cc\u9762\u7684\u5173\u952e\u5b57const\u7684\u7528\u6cd5\u4e4b\u4e00 \u653e\u5728\u51fd\u6570\u540d\u540e\u9762\u8868\u793a\u8fd9\u4e2a\u51fd\u6570\u4e0d\u80fd\u4fee\u6539\u5176\u6240\u5728\u7c7b\u91cc\u7684\u6210\u5458\u53d8\u91cf \u6bd4\u5982class A{
int a;
void func const();
}

\u5728func\u51fd\u6570\u91cc\u9762\u662f\u4e0d\u80fd\u6539\u53d8a\u7684\u503c\u7684\u3002

第一个const
函数的返回值类型是const。 这个const修饰没什么意义,你可以想象一下: 既然是函数的 返回值,而且是值传递的形式,是否const有什么意义。如果指针(引用)传递,怎表示返回值的内容不可修改:一般用在赋值操作中,例: const A& operator =() { ... }
第二个const
修改函数的输入参数,这样可以提高效率。如:用实参b调用const int func(const int& b) const时,将跳过调用的过程(不复制函数),而直接运行它的内容。
如果去掉这个const 将是const int func(int &a) const,这样就是引用传递的方式,可以对实参的值进行修改。如果是值传递const int func(int a),它与const int func(const int &a ) 的区别是将会复制这个函数,会降低效率。
第三个const
表示它不会修改它的数据成员(也就是函数中的变量)。一般来讲,凡是不会修改数据成员的都应该定义为const 版本。

我也不知道你理解没,反正第一个const 有和没有是没区别的。第二个const 修饰引用传递(const int & a)是提高效率的。第三个是表示不会修改它的数据成员,一般用在类的重载函数中。

第一个是表示返回值是个int型的常值
第二个代表是个const型的引用,就是这个a是可以引用一个int型变量,但是不可以改变这个变量的值(可以读值)
第三个代表这个函数(应该是类中的成员函数),不可以改变调用对象中的数据成员的值。(可以读写数据成员的值,不可以改写其值)

扩展阅读:const double pi ... const函数图像 ... consist in 中文翻译 ... 函数后面加const ... const函数的用法 ... 通达信const函数 ... construct ... volatile ... consist in用法 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网