类内调用与成员函数同名的全局函数

C++中如何区分同名函数

Posted by 雯饰太一 on June 25, 2023

类内调用与成员函数同名的全局函数

1
2
3
4
5
6
7
8
9
10
11
12
//全局函数
void Test(){}

class A
{
public:
    //成员函数
	void Test()
	{
		::Test();
	}
}

同名覆盖原则,使用’::’消加域标志即可。

那么,为什么会出现这种情况呢?

  • 在进行序列化的时候,经常会将函数名称写作fromStream、toStream等
  • 但是QT的序列化是依靠函数重载实现的(或者说是函数特化),所以对于基础类型,会有很多全局函数
  • 这个时候就很容易出现函数名称重复的情况,尤其是数据流处理过程中