官术网_书友最值得收藏!

  • Expert C++
  • Vardan Grigoryan Shunguang Wu
  • 223字
  • 2021-06-24 16:34:00

Identity

Identity is what differentiates one object from another. Even if we try to declare two physically indistinguishable objects, they will still have different names for their variables, that is, different identities:

Product book1;
book1.rating = 4;
book1.name = "Book";
Product book2;
book2.rating = 4;
book2.name = "Book";

The objects in the preceding example have the same state, but they differ by the names we refer to them by, that is, book1 and book2. Let's say we had the ability to somehow create objects with the same name, as shown in the following code:

Product prod;
Product prod; // won't compile, but still "what if?"

If this was the case, they would still have different addresses in memory:

Identity is a fundamental property of the object and is one of the reasons why we can't create empty objects, such as the following:

struct Empty {};

int main() {
Empty e;
std::cout << sizeof(e);
}

The preceding code will not output 0 as expected. The size of an empty object is not specified in the standard; compiler developers tend to allocate 1 byte for such objects, though you might encounter 4 or 8 as well. Two or more instances of Empty should have different addresses in memory, so the compiler must make sure objects will take up at least 1 byte of memory.

主站蜘蛛池模板: 宿迁市| 馆陶县| 瓮安县| 彭阳县| 商丘市| 铜陵市| 新平| 江油市| 唐山市| 北京市| 济阳县| 图木舒克市| 孝义市| 营山县| 仁布县| 珲春市| 罗江县| 长兴县| 略阳县| 平泉县| 屯门区| 朔州市| 桐乡市| 宁海县| 昆山市| 合肥市| 怀集县| 汝城县| 仪陇县| 三门县| 寿宁县| 镶黄旗| 和田市| 晴隆县| 儋州市| 高邮市| 岳普湖县| 房产| 青河县| 来安县| 荃湾区|