免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13811 | 回复: 8
打印 上一主题 下一主题

C 中 struct 变量之间可以直接赋值,在 C++ 中,这样复制永远是安全的吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-11 14:43 |只看该作者 |倒序浏览
在 C 中 struct 变量之间可以直接赋值,在 C++ 中,这样复制永远是安全的吗 ?

在 C++中,我定义了这样一个 struct,在程序中直接赋值并没有出错
编译执行都没有问题

struct  mystruct
{
public :
int a;
private :
int b:
};
struct mystruct a ,b;
a = b;

不知道在 C++中,这样是不是总是正确的

论坛徽章:
0
2 [报告]
发表于 2006-08-11 14:50 |只看该作者
赋值总是"正确"的,但是结果也许不是你想要的....看effictive c++,里面有一个条款写着什么时候需要自定义赋值和拷贝构造函数

论坛徽章:
0
3 [报告]
发表于 2006-08-11 14:51 |只看该作者
原帖由 yeajchao 于 2006-8-11 14:43 发表
在 C 中 struct 变量之间可以直接赋值,在 C++ 中,这样复制永远是安全的吗 ?

在 C++中,我定义了这样一个 struct,在程序中直接赋值并没有出错
编译执行都没有问题

struct  mystruct
{
public :
in ...


C就能保证安全吗? 不能

论坛徽章:
0
4 [报告]
发表于 2006-08-11 15:24 |只看该作者
永远不要说永远,嘿嘿。。。

论坛徽章:
0
5 [报告]
发表于 2006-08-11 16:33 |只看该作者
在 C 中
一般是保证 struct 复制是正确的阿
我看 有不少书上都这样说

C++中不能 ,主要是考虑到 元素存放次序以及 编译器添加的其他的函数吧  

C++ 编译器 也为 struct 添加 构造函数吗 ?

论坛徽章:
0
6 [报告]
发表于 2006-08-11 16:36 |只看该作者
默认的拷贝都是浅拷贝或者说是按位拷贝,建议楼主把我上面说的那本书找来看看就知道了

论坛徽章:
0
7 [报告]
发表于 2006-08-11 16:37 |只看该作者
>>在 C 中
>>一般是保证 struct 复制是正确的阿

都是"正确"的,但是也许不是你想要的,也许会有隐患...

论坛徽章:
0
8 [报告]
发表于 2006-08-11 16:44 |只看该作者
原帖由 converse 于 2006-8-11 16:37 发表
>>在 C 中
>>一般是保证 struct 复制是正确的阿

都是"正确"的,但是也许不是你想要的,也许会有隐患...



但是,我们用 C 写程序的时候
不是总在struct 变量间赋值吗  ?
有什么别的好办法呢 ?

论坛徽章:
0
9 [报告]
发表于 2006-08-11 16:58 |只看该作者
安全只是相对而言的,相对你目前在开发的系统,只要你的代码足够安全,那就够了。
过分追求安全,浪费的不只是速度,还有你的脑细胞。

理论上,绝对的安全是不存在的。

[ 本帖最后由 Sworder 于 2006-8-11 18:00 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP