c++ - OOP C++、虚函数和新运算符

标签 c++ oop pointers virtual-functions

我必须在下面编写代码的定义。我不了解 OOP Cpp 的一些基础知识,我知道什么是 *x&x,但这还不够......主要的事实是我无法理解 行B* p = new D, m, *k; 我不明白 m*k 代表什么。

class B {
  public: 
    virtual void msg() { cout << "classB"; }
};

class D: public B {
   public: 
     virtual void msg() { cout << "classD"; }
};

int main() {
  B* p = new D, m, *k;
  p->msg(); k = &m; k->msg();
  . . .
}

如果您能解释这段代码如何(以及为什么),请帮忙。

谢谢,抽出时间。

最佳答案

它一次声明多个变量。这与以下内容基本相同:

B *p = new D;
B  m;
B *k;

所以p是一个指向分配了new的D实例的指针。 m 是类 B 的本地实例,k 是指向 B 的指针,稍后分配给指向m.

msg 函数通过指针 pk 在两个分配的对象上调用。

请注意,* 分别应用于每个变量声明。所以 B* a, b; 没有声明两个指针,而是声明了一个指针和一个本地对象。这就是为什么很多人更喜欢直接在变量名前面写 * 的原因:B *a, b 使这一点更加明显。

关于c++ - OOP C++、虚函数和新运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11695631/

相关文章:

c++ - C++ 中的 const 和静态说明符

c++ - 找不到 BOOST_FILESYSTEM(缺少 : BOOST_FILESYSTEM_LIBRARIES)

c++ - Googletest 不运行测试夹具

c++ - boost::bind 在存储时不保存部分参数

PHPExcel : Data validation not working in . xls 格式

具有派生对象函数调用的 C++ 单例对象

Java:为什么扩展需要一个空的构造函数?

C++ 与派生类的共享指针

c++ - 将 "this"转换为引用指针

c++ - 指向静态成员变量的指针