函数后面const,函数后面的竖线

http://www.itjxue.com  2023-01-20 00:45  来源:未知  点击次数: 

const在函数后面是什么意思?

1、首先const在函数后面,只能应用于类的成员函数。

2、const表示在函数的执行过程中不允许修改类内的数据成员(mutable修饰数据成员除外)

C++在函数声明时,后面跟个const是什么意思?

const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。

使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。另外CONST在其它编程语言中也有出现,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。

const的作用:

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放入ROM中 ......

6、提高了效率。

编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

扩展资料:

const 的时候都会混淆它与 define 的区别。从功能上说它们确实很像,但它们又有明显的不同:

1、define是预编译指令,而const是普通变量的定义。define定义的宏是在预处理阶段展开的,而const定义的只读变量是在编译运行阶段使用的。

2、const定义的是变量,而define定义的是常量。define定义的宏在编译后就不存在了,它不占用内存,因为它不是变量,系统只会给变量分配内存。

但const定义的常变量本质上仍然是一个变量,具有变量的基本属性,有类型、占用存储单元。可以说,常变量是有名字的不变量,而常量是没有名字的。

有名字就便于在程序中被引用,所以从使用的角度看,除了不能作为数组的长度,用const定义的常变量具有宏的优点,而且使用更方便。所以编程时在使用const和define都可以的情况下尽量使用常变量来取代宏。

3、const定义的是变量,而宏定义的是常量,所以const定义的对象有数据类型,而宏定义的对象没有数据类型。所以编译器可以对前者进行类型安全检查,而对后者只是机械地进行字符替换,没有类型安全检查。这样就很容易出问题,即“边际问题”或者说是“括号问题”。

参考资料来源:百度百科--const

一个函数名后面加const表示什么意思

在成员函数中圆括号之后所带的关键字const表明,在该函数中不能改变类中的数据成员的值。带const的函数称为常量成员函数。下面就是个错误例子,说明const的作用:class a{int a;public:void disp() const{a=4};//a=4错误};

const 放在函数后表示什么意思

const 放在函数后表示这个函数是常成员函数, 常成员函数是不能改变成员变量值的函数。

const 限定符,它把一个对象转换成一个常量。

举例:

为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明:

class Point

{

public:

int GetX() const;

int GetY() const;

void SetPt (int, int);

void OffsetPt (int, int);

private:

int xVal, yVal;

};

const成员函数应该在函数原型说明和函数定义中都增加const限定:

int Point::GetY() const

{

return yVal;

}

class Set {

public:

Set (void){ card = 0; }

bool Member(const int) const;

void AddElem(const int);

};

bool Set::Member (const int elem) const

{

}

非常量成员函数不能被常量成员对象调用,因为它可能企图修改常量的数据成员:

const Set s;

s.AddElem(10); // 非法: AddElem不是常量成员函数

s.Member(10); // 正确

一个函数名后面加const表示什么意思??

这是把整个函数修饰为const,意思是“函数体内不能对成员数据做任何改动”。如果你声明这个类的一个const实例,那么它就只能调用有const修饰的函数。

如:

??class???Text{???

??public:???

??????????void???printconst(void)const{cout"hello"endl;}???

??????????void???print(void){cout"hello"endl;}???

??private:???

??????????int???k;???

??};???

??const???Text???a;???

??//上面定义了类Text的一常量对象???

??int???main(void)???

??{???

??????????a.printconst();???//ok???

??????????a.print();?????????????//error???????

??????????//上面a.print()调用是非法的???

??????????return???0;???

??}

const对象只能调用const成员函数。 ??

??????const对象的值不能被修改,在const成员函数中修改const对象数据成员的值是语法错误 。

??????在const函数中调用非const成员函数是语法错误

(责任编辑:IT教学网)

更多

推荐其它系统文章