C++:Struct XXX a = b是复制内容吗?

想结构或者类,a = b(a,b不为指针)的话
是把b里的内容复制给a?
a = b后,
两者只是内容相同,任何一个修改内容不会影响另一个,对吗?
你说的意思我明白,在java里,a = b永远是指针共享地址
可以问题这里a和b都是变量,a = b后,怎么2个变量就变成指针了呢?
高手请指点下.

第1个回答  2009-02-17
直接等号赋值,只是浅拷贝。也就是不同的指针指向同一个内存区域,这样是比较危险的,应为程序有自己的析构函数,会自动释放自己开辟的空间,导致另一个指针无所指的情况。这是无关乎指针的问题的。
可以重载=操作符,如struct *p=new struct XXX;p->………………
就可以了,这样就是自己开辟了一个内存空间,然后把里面的每个变量赋值,使得和原来的内存中的变量对应相等。
第2个回答  2009-02-17
是内容复制.
又不是指针或引用,修改一个不会影响到另一个本回答被提问者采纳
第3个回答  2009-02-17
我怎么觉得像把指向b的指针付给a呢~
你可以自己试一下嘛~
改变a,再查看b,如果b的值也改了就是想我说的那样了~

C++:Struct XXX a = b是复制内容吗?
直接等号赋值,只是浅拷贝。也就是不同的指针指向同一个内存区域,这样是比较危险的,应为程序有自己的析构函数,会自动释放自己开辟的空间,导致另一个指针无所指的情况。这是无关乎指针的问题的。可以重载=操作符,如struct *p=new struct XXX;p->………就可以了,这样就是自己开辟了一个内存空间...

C\/C++编程笔记:C语言结构体想要直接赋值,应该如何实现?
a = b;但是如果数组包装在结构体中,那么就能进行赋值了!相比之下,结构体可以作为函数参数和返回值,这就是一等公民的待遇!

C++参数问题
两个变量a,b的值,我们应该怎么做呢?(好吧,博主觉得这个问题十分经典)。如果你真的理解c语言中的(函数)。这个工具的本质,我想稍微仔细的思考一下。可能就不来查看这篇文章,对函数来说,他所传递的任何参数,仅仅是原来参数的一个拷贝。应对任何企图通过v。idu|te卜(|ntv)来改变v的值,都...

什么是拷贝构造函数?拷贝构造函数何时被调用?
拷贝构造函数,又称复制构造函数,由编译器调用来完成一些基于同一类的其他对象的构建及初始化。在一个对象以值传递的方式传入函数体时;一个对象以值传递的方式从函数返回时;一个对象用于给另外一个对象进行初始化(常称为赋值初始化)时被自动调用。拷贝构造函数必须以引用的形式传递(参数为引用值)。...

在C语言中。结构体变量之间可以相互赋值吗?
C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。举例:voidmain(){ STUstu1={0,10};STUtemp={12,88};STU*p1=&stu1;STU*p2=&temp;printf("%d-%d\n",...

关于带指针的结构体的复制问题
根据你的需要撒。看看是共享内存还是不共享内存、如果不共享内存就需要直接实现Copy方法。C里边可以是自定义函数。C++里边实现Copy构造函数就可以了。如果要共享内存C麻烦点。c++直接用boost.shared_ptr就可以了,效率很高。

C++中,什么是深拷贝?什么是浅拷贝?
拷贝构造函数是为了类像内置类型那样能够进行复制,比如int a=0;int b = a;默认复制构造函数一本就是浅拷贝,深拷贝和浅拷贝时针对类数据成员有指针成员或引用成员,比如一个类中有一个指针成员int * p,浅拷贝是指在复制指针时,直接复制指针,即两个类的指针p都指向一个内存单元,而深拷贝是指...

C++里的struct和class的区别到底是什么?我在网上查到的是:除了他们的默...
在C++里面:都可以有函数,默认情况下struct中变量是public,而class中是private 有一点不明白,class支持的继承和多态,struct也支持??class在赋值运算符右边出现需要有定义的拷贝构造函数,而struct是默认的位拷贝.但是一般从兼容C的角度考虑,struct里面只包含数据成员而不包含成员函数,这只是一个编程习惯问题...

C++struct问题
A里面 ,struct TTT可以定义结构变量的,它说不能,这是不正确的 B里面, TTT是结构标签,不是类型,struct TTT才是类型,TTT不是struct类型的变量,而是struct类型的标签。不正确。C里面,CIN是结构类型的别名,可以定义结构变量,正确。D里面,CIN是结构类型的别名,不是变量,不正确。于是选C。

C++中struct和class的区别
struct A { char a;};struct B : A { char b;};这个时候B是public继承A的。如果都将上面的struct改成class,那么B是private继承A的。这就是默认的继承访问权限。所以我们在平时写类继承的时候,通常会这样写:struct B : public A 就是为了指明是public继承,而不是用默认的private继承。当然...

相似回答