首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和C/C++中的可变/不变对象

Python和C/C++中的可变/不变对象
EN

Stack Overflow用户
提问于 2014-12-11 19:59:02
回答 2查看 960关注 0票数 2

您不能修改不可变的Python对象,您可以简单地创建具有新值的新对象:

代码语言:javascript
复制
n = 1
id(n)
output: 123
n = n + 1
id(n)
output: 140

不过,您可以修改可变对象:

代码语言:javascript
复制
m = [1]
id(m)
output: 210
m.append(2)
id(m)
output: 210

我在徘徊,在C/C++中,与Python的可变/不变对象最接近的概念是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-11 20:21:36

简单:const对象

更复杂的是:由于python遵循引用语义,所以一切都可以粗略地看作是一个泛型指针。一个指针,可以重新分配,但它所指向的是不能改变的是指向const的指针,这就是我认为您想要的。

代码语言:javascript
复制
int i;
int j;
const int *p =&i;
p = &j;
*p = 1; // error

但是,由于python动态地分配它的对象,而且C不会这样做,除非被告知这样做,所以不能像下面这样做并且得到与python相同的行为

代码语言:javascript
复制
*p = *p + 1;

所以它仍然缺乏,但它是最接近我认为你可以得到的东西,而不是真正的人为。

票数 1
EN

Stack Overflow用户

发布于 2014-12-11 20:25:19

不可变是一个通常在函数式编程中存在的概念(尽管它对OOP也很重要):

object

C/C++具有不可变性(通过const),但由于指针和访问/修改进程所拥有的任意内存的能力,C/C++大多是围绕可变性(C比C++)构建的。即使是康斯特也有漏洞:

const-correctness

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27431346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档