成员函数参数可以是相同的类类型吗?

Ahm*_*med 3 c++ class

//node.h 
class node 
{
      public:
            void sort(node n);

};
Run Code Online (Sandbox Code Playgroud)

我还没有尝试过代码.但有趣的是,这是一个有效的案例,为什么?

编辑:

这引出了另一个问题:我可以在这样的成员函数中声明FOO吗?

//FOO.h
Class FOO
{
   public:
   void sort(int n) ;
   void swap(int x , int y ); 
}

//FOO.cpp

void FOO::sort (int n)
{
     FOO obj;
     obj.swap(3 , 5) ;
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*der 5

是的,这完全有效.如果你不能这样做,你怎么能写复制构造函数?

类似但无效的情况包括与类/结构的成员相同的类型.

struct Foo
{
  Foo m_foo;
};
Run Code Online (Sandbox Code Playgroud)

你不能这样做,因为它基本上是一个循环定义,如果你有:

struct Foo
{
  Foo m_foo;
  Foo m_bar;
};
Run Code Online (Sandbox Code Playgroud)

然后一个Foo将是2个Foos,这将是4个Foos,这将是8个Foos等,这没有任何意义.

另一方面,您可以指向相同类型的指针:

struct Foo
{
  Foo* m_foo;
};
Run Code Online (Sandbox Code Playgroud)

因为指向Foo的指针与Foo不同.无论指向什么指针,指针都是指针,因此没有循环定义或依赖关系.