c语言const(C语言const函数)

c语言中const有多少种作用的?求解??。。(11)如何修改常量?有时候我们却不得不对类内的数据进行修改,但是我们的接口却被声明了const,那该怎么处理呢?我对这个问题的看法如下:1)标准用法:mutableclassA{public:A(inti=0):test(i){}voidSetValue(inti)const{test=i;}p

c语言中const有多少种作用的?求解

??。。

(11)如何修改常量?

有时候我们却不得不对类内的数据进行修改,但是我们的接口却被声明了const,那该怎么处理呢?我对这个问题的看法如下:

1)标准用法:

mutable class A {

public:

A(int i=0):test(i) { }

void SetValue(int i)const { test=i; }

private: mutable int test;//这里处理!

2)强制转换:

const_cast class A {

public:

A(int i=0):test(i) { }

void SetValue(int i)const {

const_cast (test)=i;

}//这里处理!

private:

int test;

3)灵活的指针:

int* class A {

public:

A(int i=0):test(i) { }

void SetValue(int i)const { *test=i; }

private:

int* test; //这里处理!

4)未定义的处理

class A {

public:

A(int i=0):test(i) { }

void SetValue(int i)const {

int *p=(int*)&test; *p=i;

}//这里处理!

private:

int test;

}; 注意,这里虽然说可以这样修改,但结果是未定义的,避免使用!

5)内部处理:this指针

class A {

public:

A(int i=0):test(i) { }

void SetValue(int i)const {

((A*)this)->test=i;

}//这里处理!

private:

int test;

6)最另类的处理:空间布局

class A {

public:

A(int i=0):test(i),c(‘a’) { }

private:

char c;

const int test;

int main()

A a(3);

A* pa=&a;

char* p=(char*)pa;

int* pi=(int*)(p+4);//利用边缘调整

*pi=5;//此处改变了test的值!

return 0;

虽然我给出了6中方法,但是我只是想说明如何更改,但出了第一种用法之外,另外5种用法,我们并不提倡,不要因为我这么写了,你就这么用,否则,我真是要误人子弟了:)

(12)最后我们来讨论一下常量对象的动态创建。

const在C语言中有哪些用法?

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

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1553299181@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.nhjkw.cn/673.html