C ++为什么不能重新声明类成员函数,但可以重新声明普通函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++为什么不能重新声明类成员函数,但可以重新声明普通函数相关的知识,希望对你有一定的参考价值。

void say();
void say();  // ok

class Test{
    void say();
    void say(); // error class member cannot be redeclared
};

这是因为类成员函数声明分配了内存,以便编译器不允许重新声明?预先感谢。

答案

您可以根据需要在c ++中声明多次(只要它们都相同)。您只能定义一次。

对于类成员声明,​​尽管您声明了某些内容,但实际上是在定义类成员,并且不允许两次声明同一成员。如果我们使用变量而不是函数,则规则存在的原因更加明显:

extern int a;
extern int a; //  just a redeclaration, that's fine
struct B
{
  int b;
  int b; // not allowed, is this a second member also called b or is it a redeclaration of the existing member?
};

以上是关于C ++为什么不能重新声明类成员函数,但可以重新声明普通函数的主要内容,如果未能解决你的问题,请参考以下文章

友元函数都有哪些特点?

将线程函数声明为静态函数的问题

什么是友元?为什么要引入友元?解释友元函数和友元类

c++中的虚函数有啥作用?

请问啥是成员函数的定义?

友元的友元类