C++;存储器是否逐字节复制? 我从C++的书籍思维中学习C++。有一段代码我不懂。它是包含字符或整数数组的结构的成员函数。add函数应该添加每个元素:char或int int Stach::add(const void* element){ int startBytes=next*size; //according to the book, next is the next space available and the size is the size of the space unsigned char* e=(unsigned char*)element; for(int i=0; i<size;i++) storage[startBytes+i]=e[i]; next++; return(next-1);// return index }

C++;存储器是否逐字节复制? 我从C++的书籍思维中学习C++。有一段代码我不懂。它是包含字符或整数数组的结构的成员函数。add函数应该添加每个元素:char或int int Stach::add(const void* element){ int startBytes=next*size; //according to the book, next is the next space available and the size is the size of the space unsigned char* e=(unsigned char*)element; for(int i=0; i<size;i++) storage[startBytes+i]=e[i]; next++; return(next-1);// return index },c++,storage,C++,Storage,非常感谢 C++将所有程序内存建模为字节数组(字符、无符号字符)。法律允许我们通过将指向该对象的指针强制转换为(通常无符号的)字符*,逐字节检查任何对象的表示 这段代码所做的是使用字节数组作为一种类型独立的存储空间。调用add时,它会将要添加的对象的字节表示形式复制到其内部字节数组存储中。这就是如何在C中实现一个独立于类型的容器,但完全不适合C++,甚至在2000中。 int STAC::这是80年代的书吗。它被C++称为C++思维。你为什么这么说?那本书是2000年写的,当时显然不是最新的。

非常感谢

C++将所有程序内存建模为字节数组(字符、无符号字符)。法律允许我们通过将指向该对象的指针强制转换为(通常
无符号的
字符*
,逐字节检查任何对象的表示


这段代码所做的是使用字节数组作为一种类型独立的存储空间。调用
add
时,它会将要添加的对象的字节表示形式复制到其内部字节数组
存储中。这就是如何在C中实现一个独立于类型的容器,但完全不适合C++,甚至在2000中。

<代码> int STAC::这是80年代的书吗。它被C++称为C++思维。你为什么这么说?那本书是2000年写的,当时显然不是最新的。你将有一个更好的时间从最近的text.ic学习。你有什么建议吗?事实上,这不是必需的。只有满足可复制性要求的对象才允许以这种方式进行检查,至少就标准而言是这样。也就是说,据我所知,没有任何一种实现实际上会阻止它工作。所有对象都有一个以内存字节为单位的表示(1.8p1“对象是存储区域”),但只有标准布局类型的表示保证是连续的。在任何情况下,对于阅读他们的第一本关于C++的人来说,这都是太多的细节了。@ ByyyOnAy我们都是对的(1.8P5)。一个平凡的可复制的或标准的布局类型(3.9)的对象将占据连续的字节存储。“足够公平:”(并且在15个字符中)。
unsigned char* e=(unsigned char*)element;
for(int i=0; i<size;i++)
storage[startBytes+i]=e[i];
unsigned char* e=(unsigned char*)element;