定义一个派生类BaseClass对象;不工作

Define a DerivedClass::BaseClass obj; does not work

本文关键字:对象 BaseClass 工作 派生 一个 定义      更新时间:2023-10-16

我是一个c++初学者。我正在学习关于查找名称(或解析)的文本。我在下面的代码中通过"Derived::Base obj"定义了一个实例。但是对象没有基类的void print()函数。这对我来说很奇怪。或者我误解了"派生的::基对象"的含义。如果有人能告诉我代码里发生了什么。请告诉我。

class Base {
public:
    void print(void) {
        std::cout << "Base::print()." << std::endl;
    }
};
class Derived : public Base {
};
Derived::Base obj;
obj.print();  // Error!! Compiler gives me an error message "error: ‘obj’ does not name a type"

你不能这么做:

 Derived::Base obj;

创建派生类的对象,只需使用:

 Derived d;
 d.print();

(来自注释):编译器没有给你任何错误的原因,而:

 Derived::Base obj;

因为它创建的是基对象,而不是派生对象。

可以通过在派生类中创建类似的函数来测试:

void print(void) {
    std::cout << "Derived::print()." << std::endl;
}

:

Derived d;
d.print();
Derived::Base obj;
obj.print();