问几个 C++的小问题

cscycd1 2013-02-22 07:14:06
1.
int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}

为什么 这句话 会出错 求详解

2.
A
B C
B 和C 继承与A
B*b=new B(位置);
C*c=new C(类型);
现在 我有了个 2个对象 b和c
我想对他们进行复制 并放入数组
其他语言 可以这样写
A* a[20];
A*aaa;
for(int i=0;i<20;i++)
{
if(i%2)
aaa=b.copy();
else
aaa=c.copy();
a[i]=aaa;
}
上面 这个 的意思是 我对已经 存在 b 和 c 进行复制 并把它们存进数组 但是 c++里面 我不知道 如何复制对象 求解
3.为什么 说 copy一个对象 要比new一个对象的 效率高
...全文
331 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cscycd1 2013-02-23
  • 打赏
  • 举报
回复
class CA { public: CA(); // 默认构造 CA(CA& aItem); // !!!拷贝构造!!! }; 这样子 传的是一个 对象 但是 我那样传的话 传的是指针啊? 而且 下面的子类有各自的数据成员 那我不用在拷贝函数里面 给数据成员赋值吗? 可是这个拷贝数 写在 父类里面 子类会拷贝自己东西吗?
mujiok2003 2013-02-23
  • 打赏
  • 举报
回复
1,strncpy instead of strcpy 2, 模拟其他语言的copy就好了了。 3. 上下文是什么?
帅得不敢出门 2013-02-23
  • 打赏
  • 举报
回复
1. 只有一个坑, 要两个人进去拉, 很危险的。 2. 挎贝构造
沈-军涛 2013-02-23
  • 打赏
  • 举报
回复
第一个问题LZ说的已经很明白了! 第二个问题: 不用.copy 直接等就OK 因为你的b和c都是指针a也是指针 只要不释放就可以 copy还要看你的类中有没有定义这个方法! 不是每个类都有这种方法的. 一般C/C++程序员说的拷贝对像是指如下情况: class CA { public: CA(); // 默认构造 CA(CA& aItem); // !!!拷贝构造!!! }; 当你 CA a; CA b(a); // 效率高!!!
okmime 2013-02-23
  • 打赏
  • 举报
回复

char* str = (char*)malloc(sizeof("hello"));
strcpy(str,"hello");
printf(str);
2.复制对象即复制对象数据,直接 = 3.copy即复制(私有/公有)数据数值,new须在堆中分配内存
baoliang0624 2013-02-23
  • 打赏
  • 举报
回复
char型变量a怎能放得下字符串
stjay 2013-02-22
  • 打赏
  • 举报
回复
1.char a;只有1个字节 strcpy(str,"hello");拷贝6个字节,造成内存越界 2.还是new出来吧 估计这个copy是个引用

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧