为什么类里要有const函数,const函数在类里有什么作用?

如题所述

  const是一个C语言的关键字,它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别
人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外CONST在其他编程语言中也有出现,如C++、PHP5、
C#.net、HC08 C。
  主要作用

  (1)可以定义const常量,具有不可变性。
  例如:const int Max=100; Max++会产生错误;
  (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
  例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
  (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!
  如(1)中,如果想修改Max的内容,只需要:const int Max=you want;即可!
  (4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错;
  例如: void f(const int i) { i=10;//error! }
  (5) 可以节省空间,避免不必要的内存分配。 例如:
  #define PI 3.14159 //常量宏
  const double Pi=3.14159; //此时并未将Pi放入RAM中 ......
  double i=Pi; //此时为Pi分配内存,以后不再分配!
  double I=PI; //编译期间进行宏替换,分配内存
  double j=Pi; //没有内存分配
  double J=PI; //再进行宏替换,又一次分配内存!
  const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝。
  (6) 提高了效率。
  编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-13
const 对于类的封装是很有好处的,要知道用const定义后,其值是不能随便改变的,相当于一个常量。如果类中的成员能随便改变其属性,类就会很混乱,代码的重复利用就很差,不利于编程。
第2个回答  推荐于2017-09-23
有两种const函数,声明如下:
1、const T func();
2、T func() const;
第一种表示返回的是const的类型,也即返回的值不能作为左值,楼主懂的。
第二种表示该成员函数不能修改其成员变量的值,即该函数不能改变任何该类的非静态成员的值。追问

T func() const 这类函数什么情况下会用到

C++的类中有static func() const{}吗

追答

当你不想这个成员函数改变成员的值的时候,比如你类定义如下:
class A
{
public:
int get_a() const
{
return a;
}
private:
int a;
int b;
}

因为你这里只是获取a而已,不想改变成员a的值,所以就可以定位为const函数咯。你这样声明的话就是告诉别人,我这个函数不会改变成员的值。

本回答被提问者采纳

为什么类里要有const函数,const函数在类里有什么作用?
const是一个C语言的关键字,它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别 人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C。主要作用 (1)...

有谁可以详细的讲讲 const 作用和用法
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。 (7) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量...

c++ 什么时候得在函数后面加const
函数后面加const关键字,这告诉编译器,该函数不会改变成员变量的值(因为是成员变量,所以只有类或结构体的成员函数才能加const函数)。也让阅读代码的人一眼看就知道这个函数不会改变成员的值,有利于代码可读性。一般情况下,函数不改变成员变量的值,也可以不加const,但是在某些情况下必须加,比如:...

const是什么意思
1. const的定义与作用 const用于声明常量,即在程序运行过程中其值不能被修改。这对于那些不需要改变其值的变量来说是非常有用的。常量通常在程序的多个地方被使用,为了保持其值的一致性,通常将其声明为const类型,以避免不小心对其进行修改。这对于代码的维护、可读性以及防止潜在错误都是很有帮助的。

为什么我写的一个c++中类的复制构造函数的参数一定要加const??
语句Complex c3 = c1 + c2;中的c1 + c2的结果是一个临时变量(右值),在C++03中,只有const引用才能够引用右值。所以加上const限定符有以下好处:既可以从const和非const左值复制构造,也可以从const和非const右值复制构造。

const的用法总结
1、const修饰变量,赋予其常量属性,确保值不可更改,但需初始化。2、指针使用const修饰,可限制其指向的值在函数内保持不变。3、保护函数参数不被修改,确保参数值在函数内部安全。4、函数返回值使用const修饰,防止结果被意外修改,需与const变量接收。5、类成员函数用const修饰,保护非静态成员免遭修改...

c++编程,为什么在类中用const修饰函数void displayFrac() const;程序...
原因如下:c++语言之所以灵活度高,那是因为c+编译器背着程序员做很多事情。比如这里的const。当一个函数被用作成员函数时,其实有一个隐式的this指针存在。成员函数会被编译器改变为一般的全局函数,同时添加一个参数,即该类的指针。比如你的函数 void fraction::displayFrac() const { cout<<num<<...

const是什么意思?怎么用啊?
const是“constant”的缩写,意为“常量”。在编程中,使用const声明的变量或对象是一个常量,其值在初始化后不能被修改。这对于确保某些数据在程序执行过程中保持不变是非常有用的。2. const的用法:声明常量:在大多数编程语言中,可以使用const关键字来声明一个常量。例如,`...

纯虚函数作抽象类,后面加上一个const有什么作用,望解答的详细一点_百 ...
const关键字用在函数上,说明这个函数不能修改类的成员变量。这个用法一般如:class BaseGraph { public:virtual int GetArea() const =0;} class DerivedGraph :BaseGraph { ...} 在这里,GetArea()只有在各个派生类才有效(基类其实就是定义一个接口函数),而这个函数后面加const限定限定这个函数是...

C++为什么要声明形参为const?
const 引用,可以避免在函数调用时进行复制操作,减少了函数调用的开销。而且在某些情况下,编译器可以通过 const 关键字进行优化,生成更高效的代码。因此,在 C++ 中,将函数形参声明为 const 是一种好的编程习惯,可以提高代码的可靠性、可维护性和安全性,也有助于提高程序的执行效率。

相似回答