当前位置: 首页 > 知识库问答 >
问题:

指向E类成员的D类指针

莫振
2023-03-14

所以我的教授喜欢用我们应该弄清楚的论文上的代码来测试我们。我不会发布代码,因为我不是在寻找答案,这只是他曾经让我们感到困惑的一件事是,当他初始化一个类的对象,然后初始化另一个类的指针指向上述对象时。它让我感到困惑,这是一个如此具体的问题,我不知道如何搜索它。例:

class A {

// etc
}

...


class D {
void fy(etc, etc, etc) {}
// etc
}


class E: public D {
void fy(etc, etc, etc) {}
// etc
}

main() {
 E e
 D *d = &e
 d->fy(15,25)
 //everything else

“d-

当指针来自一个类却指向另一个类的对象时,它到底在做什么?我知道这个问题以前可能已经被回答过了,但是我在任何地方都找不到它,所以我甚至希望能直接得到答案。谢谢您们。

共有2个答案

祁权
2023-03-14

答案就在类声明中:

class E : public D

E 是 D 的子类,这意味着任何类型 E 的对象也是 D 类型的对象。因此,可以将 E 类型的 n 个实例分配给 D 类型的指针。但是,在访问该指针时,只能访问 D 类的成员,而不能访问 E 类,因为指针类型仍然是 D。为了访问特定于 E 类的任何方法,您需要强制转换对象类型。

周博达
2023-03-14

行<code>class E:public D</code>表示任何<code>E</code<都是<code>D</code>。因此,E的任何地址都可以存储到D指针中。

 类似资料:
  • 指向D类的指针与指向结构的指针完全相同,并且访问指向使用成员访问运算符 - >运算符的类的指针的成员,就像使用指向结构的指针一样。 与所有指针一样,您必须在使用之前初始化指针。 让我们尝试以下示例来理解指向类的指针的概念 - import std.stdio; class Box { public: // Constructor definition this(

  • 从参考资料中,我发现: 类模板std::function是一个通用多态函数包装器。函数的实例可以存储、复制和调用任何可调用的目标函数、lambda表达式、绑定表达式或其他函数对象,以及指向成员函数的指针和指向数据成员的指针。 我不明白为什么应该能够存储这样的指针,而且我以前从未听说过这个功能。 真的有可能吗,我错过了什么或者是留档中的错误? 在这种情况下,

  • 假设有一个结构 我得到一个指向该结构的成员的指针,比如作为某个函数的参数: 如何获取指向包含对象的指针?最重要的是:在不违反标准中的某些规则的情况下,也就是说,我想要标准定义的行为,而不是未定义或实现定义的行为。 附带说明:我知道这规避了类型安全。

  • C++ 类 & 对象 一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符 ->,就像访问指向结构的指针一样。与所有的指针一样,您必须在使用指针之前,对指针进行初始化。 下面的实例有助于更好地理解指向类的指针的概念: #include <iostream> using namespace std; class Box { public:

  • 我正在学习如何在C中使用并写了以下示例: 问:是否保证在所有情况下指向一个结构的指针都是指向它的第一个元素的完全相同的指针? 在这种特殊的情况下,它能像我预期的那样工作,但我不确定它是否能得到保证。编译器可以在开始时插入一些填充吗? 我唯一能找到的关于结构类型布局的是N1570的类型: 结构类型描述了一组按顺序分配的非空成员对象(在某些情况下,还包括一个不完整的数组),每个对象都有一个可选的指定名

  • GCC 8.2.1和MSVC 19.20编译以下代码,但Clang 8.0.0和ICC 19.0.1无法这样做。 Clang 8.0.0 的错误消息如下: 我注意到它在两种情况下可以用Clang编译: 从最后一个定义中删除括性 将线 替换为