为什么要在声明成员函数时指定类名

Why specify class name when declaring member functions?

本文关键字:函数 声明 成员 为什么      更新时间:2023-10-16
class C : public B
{
public:
    void C::Test();
};

在成员函数的声明中指定C有什么意义?

你不应该这样做。许多现代编译器会将此视为语法错误,例如,g++ 4.2.1 会!

这仅在定义类外部的方法时才是必需的:

class C : public B
{
public:
    void Test();
};
void C::Test() { ... }

不仅没有意义,而且是彻头彻尾的非法(参见语言标准中的 8.3/1)。通常,在C++语言中,仅当您引用先前声明的实体时才允许使用限定名称,但在引入新实体时不允许使用限定名称(此规则有一些例外,但此处均不适用)。

您发布的代码需要来自任何符合标准的编译器的诊断消息,因为您的成员函数声明无效。

没有意义,没有必要这样做。由于Test的声明在C声明的范围内,编译器知道函数TestC的成员。