我长期搜索谷歌,但没有得到与我的问题有关的任何内容。这是详细信息。
问:
void myfunc(const myclass& para_ins);
int main(){...
myclass ins;
myfunc(ins);
...}
如果我传入一个类似于上面的类的函数,那么const参数实际上对这里的ins做了什么?由于它在这里使用引用,我不认为它会复制ins并使其中的每个成员都不可更改,所以它实际上是否将原始类更改为const?如果是这样,如果有一个多线程程序超过2个线程同时操作ins怎么办?如果没有,这里究竟发生了什么?
答案 0 :(得分:0)
如果我传入一个类似于上面的类的函数,const参数实际上对这里的ins做了什么?
当一个函数声明一个参数为const&
时,它承诺它不会改变对象,也不会调用该对象的任何非const
成员函数。
由于它在这里使用引用,我不认为它会复制ins并使其中的每个成员都不可更改
这是正确的。
它实际上是否将原始类更改为const?
不,它没有。如果调用函数中的原始对象不是调用函数中的const
对象,则仍可以在调用函数中修改它。