在C++中Friend函数和Virtual函数的区别
友元类可以访问被声明为友元的其他类的私有和受保护成员。有时允许特定类访问其他类的私有成员是有用的。类似地,友元函数是在类作用域之外声明的函数。该函数可以像普通函数一样被调用,并包括对象/参数。它通常用于用于重载<<和>>以进行I/O。它通常可以访问其友元的任何成员类。
举例:
现在谈论第二个函数是虚函数。所以,虚函数基本上是在基类中声明的类成员函数。在这种情况下,使用虚关键字使基类成员函数成为虚函数。它还支持编译时和运行时的多态性。它还允许派生类简单地替换由基类提供或给定的实现。
举例:
到目前为止,我们已经讨论了友元函数和虚函数,现在让我们看看它们之间的主要区别,甚至更好地掌握它。
友元函数 __ | 虚函数 __ |
---|---|
非成员函数通常可以私有访问类的表示。 | 它是一个可以由派生类覆盖的基类函数。 |
它用于访问私有和受保护的类。 | 它用于确保为对象调用正确的函数,无论使用什么表达式来创建函数类。 |
它在类作用域之外声明。使用“friend”关键字进行声明。 | 它在基类中声明,通常由派生类重新定义。使用“virtual”关键字进行声明。 |
它通常用于使非成员函数访问类的隐藏成员。 | 它通常需要告诉编译器在函数上执行动态链接的后期绑定。 |
它们支持以前隐藏的类的共享信息,提供了C++的数据隐藏限制逃脱方法,可以访问未继承的类的成员等。 | 它们支持面向对象编程,确保函数被覆盖,可以成为其他函数的朋友等。 |
即使不是该类的成员,它也可以访问该类的私有成员。 | 它用于多态性的工作。 |