如何判断哪个类拥有一个指针

kmiklas

我正在观看有关智能指针的视频(下面的vid链接),该视频标识了传统C ++指针的以下问题:

您无法分辨出谁拥有指针

Hebert继续给出以下示例:A类具有指向浮点数的指针,B类具有指向同一浮点数的指针。这两个指针中的哪个拥有指针?好吧,你不能告诉...不清楚...我们不知道删除指针是谁的工作...坏..令人费解..难以调试。

他在说什么鬼话?我们如何不知道哪个类拥有指针?如果指针是作为类A或B的实例的一部分创建的,那么它不是分别简单地是A-> myPointer和B-> myPointer吗?

Thx:^)基思

https://www.youtube.com/watch?v=Jc9n9BcYSj4
大约1:00

编辑

#include <iostream>
class A {
public: float * f_ptr;
};
class B {
public: float * f_ptr;
};
int main() {
    float f=2.71;
    A* a = new(A);
    B* b = new(B);
    a->f_ptr = &f;
    b->f_ptr = &f;
    std::cout << "a->f_ptr: " << *a->f_ptr << std::endl;
    std::cout << "b->f_ptr: " << *b->f_ptr << std::endl;
    delete a;
    delete b;
    std::cout << std::endl;
}

/************
OUTPUT

a->f_ptr: 2.71
b->f_ptr: 2.71

*/

编辑2

以下帖子很好地说明了这种现象:http :
//ericlavesson.blogspot.com/2013/03/c-ownership-semantics.html

磁石

当他说某个类“拥有指针”时,这意味着该类负责清理指针所做的混乱。您可以有两个不同的类A和B,它们使用指向同一对象的指针。除非您是这些类的设计者,否则您将无法确定哪个对象最后应删除该对象并在该对象之后进行清理,例如,解锁一些资源。您无法通过使用一些内置的语言语义来弄清楚或设置它-您必须通过文档等方式告知它。如果设计不好,您可能会得到两个类,分别尝试在同一对象之后两次清理,或者根本不清理该对象。

从技术上讲,这是关于谁拥有指针所指向的内存,而不是关于指针本身,但是大多数人在谈论拥有指针时都提到了我上面描述的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何找出哪个程序“拥有”一个热键?

来自分类Dev

如何返回一个指向“寿命不长”的拥有价值的指针?

来自分类Dev

如何拥有一个类中的几种枚举类型之一的参数

来自分类Dev

在Delphi中,如何拥有一个实现IComparable并从TEqualityComparer继承的类?

来自分类Dev

如何在两个文件中拥有一个类和超类(Typescript)

来自分类Dev

如何在两个文件中拥有一个类和超类(Typescript)

来自分类Dev

如何判断一个类是否继承自另一个类?

来自分类Dev

我如何拥有一个可以是具有相同方法的任何类的对象?

来自分类Dev

在模板中,我如何拥有一个柜台?

来自分类Dev

如何拥有一个自动滚动的TextView

来自分类Dev

如何拥有一个非矩形的div?

来自分类Dev

如何拥有一个自动滚动的TextView

来自分类Dev

如何拥有一个细胞的数量?

来自分类Dev

rdbuf(...)返回一个指针-谁拥有指向的缓冲区?

来自分类Dev

如何在整个执行 ant taskdef 操作的过程中拥有一个单例类的实例

来自分类Dev

如何判断哪个按钮在 swift 4 中调用了另一个视图?

来自分类Dev

如何判断一个类是系统类还是定制类?

来自分类Dev

如何为一个模板拥有一个控制器的多个实例

来自分类Dev

SwiftUI如何拥有下一个和后一个动画?

来自分类Dev

如何在另一个集合中拥有一个集合?

来自分类Dev

拥有一个在整个对象生命周期中都拥有资源的类成员是一个好主意吗?

来自分类Dev

无法从另一个类设置 MainWindow 拥有的 TextBox 文本

来自分类Dev

拥有一个ObjectFactory接口和实现该接口的类是否是一个好的设计

来自分类Dev

在OrientDB中,如何判断Java API中一个类是否继承自另一个类?

来自分类Dev

是否有可能(以及如何)找出哪个类在Java中创建了一个命名线程?

来自分类Dev

当我们有一个模板类时,如何使用继承有模板指针

来自分类Dev

我可以拥有一个对象类型的 ArrayList ,它具有指向 Java 中对象的指针列表吗?

来自分类Dev

指向一个指针的指针,哪个指向一个内存块,应该释放哪个指针?

来自分类Dev

EfCore 3 和拥有类型在同一个表中,你如何设置拥有的实例

Related 相关文章

  1. 1

    我如何找出哪个程序“拥有”一个热键?

  2. 2

    如何返回一个指向“寿命不长”的拥有价值的指针?

  3. 3

    如何拥有一个类中的几种枚举类型之一的参数

  4. 4

    在Delphi中,如何拥有一个实现IComparable并从TEqualityComparer继承的类?

  5. 5

    如何在两个文件中拥有一个类和超类(Typescript)

  6. 6

    如何在两个文件中拥有一个类和超类(Typescript)

  7. 7

    如何判断一个类是否继承自另一个类?

  8. 8

    我如何拥有一个可以是具有相同方法的任何类的对象?

  9. 9

    在模板中,我如何拥有一个柜台?

  10. 10

    如何拥有一个自动滚动的TextView

  11. 11

    如何拥有一个非矩形的div?

  12. 12

    如何拥有一个自动滚动的TextView

  13. 13

    如何拥有一个细胞的数量?

  14. 14

    rdbuf(...)返回一个指针-谁拥有指向的缓冲区?

  15. 15

    如何在整个执行 ant taskdef 操作的过程中拥有一个单例类的实例

  16. 16

    如何判断哪个按钮在 swift 4 中调用了另一个视图?

  17. 17

    如何判断一个类是系统类还是定制类?

  18. 18

    如何为一个模板拥有一个控制器的多个实例

  19. 19

    SwiftUI如何拥有下一个和后一个动画?

  20. 20

    如何在另一个集合中拥有一个集合?

  21. 21

    拥有一个在整个对象生命周期中都拥有资源的类成员是一个好主意吗?

  22. 22

    无法从另一个类设置 MainWindow 拥有的 TextBox 文本

  23. 23

    拥有一个ObjectFactory接口和实现该接口的类是否是一个好的设计

  24. 24

    在OrientDB中,如何判断Java API中一个类是否继承自另一个类?

  25. 25

    是否有可能(以及如何)找出哪个类在Java中创建了一个命名线程?

  26. 26

    当我们有一个模板类时,如何使用继承有模板指针

  27. 27

    我可以拥有一个对象类型的 ArrayList ,它具有指向 Java 中对象的指针列表吗?

  28. 28

    指向一个指针的指针,哪个指向一个内存块,应该释放哪个指针?

  29. 29

    EfCore 3 和拥有类型在同一个表中,你如何设置拥有的实例

热门标签

归档