首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问几个 C++的小疑点

2013-02-27 
问几个 C++的小问题1. int main(){char achar *str&astrcpy(str,hello)printf(str)return 0}为什

问几个 C++的小问题
1. 

int main()
{
  char a;
  char *str=&a;
  strcpy(str,"hello");
  printf(str);
  return 0;
}

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

2.

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一个对象的 效率高
[解决办法]
1.char a;只有1个字节
strcpy(str,"hello");拷贝6个字节,造成内存越界

2.还是new出来吧
估计这个copy是个引用
[解决办法]
第一个问题LZ说的已经很明白了!
第二个问题:
不用.copy 直接等就OK
因为你的b和c都是指针a也是指针
只要不释放就可以
copy还要看你的类中有没有定义这个方法!
不是每个类都有这种方法的.
一般C/C++程序员说的拷贝对像是指如下情况:

class CA
{
public:
     CA(); // 默认构造
      CA(CA& aItem); // !!!拷贝构造!!!
};
当你
CA a;
CA b(a); // 效率高!!!
 

热点排行