浅谈C++ 类权限

特点

权限

是对类中的数据和方法的保护

类别

  • public
  • protected
  • private

特赦(friend)

  • 友元类
  • 友元函数

修改(using)

权限修改并不是修改父类中的权限, 而是在子类中对父类更加严格的限制下,开放局部已有的权限。

#include 
class Base
{
public:
void say()
{
std::cout << "hello" << std::endl;
}
};
class Child: private Base
{
public:
using Base::say;
};
int main()
{
Child* ptr_child = new Child();
ptr_child->say();
return 0;
}

重定义

对已有的父类方法的重定义

#include 
class Base
{
public:
void say()
{
std::cout << "Base hello" << std::endl;
}
void say(std::string &name)
{
std::cout << "Base hello" << name << std::endl;
}
};
class Child: private Base
{
public:
void say()
{
std::cout << "Child hello" << std::endl;
}
};
int main()
{
Child* ptr_child = new Child();
//调用重定义后的方法
ptr_child->say();
//对say 方法进行重定义后,只能使用重定义的方法,其他say的重载方法都不能使用,
//除非转换成父类(向上转型)
Base* ptr_base = (Base*)ptr_child;
std::string name = "me";
ptr_base->say(name);
return 0;
}


分享到:


相關文章: