C++ 类和数据抽象

2021/9/25 1:10:56

本文主要是介绍C++ 类和数据抽象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

● 请你来说一下C++中类成员的访问权限

参考回答:C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。
Java、C# 程序员注意:
C++ 中的 public、private、protected 只能修饰类的成员,不能修饰类,C++中的类没有共有私有之分

在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 public 属性的成员,不能访问 private、protected 属性的成员

private,public,protected方法的访问范围.(public继承下)

  • private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.
  • protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问
  • public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问

注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数

A.在无继承的情况下,类内部可以随意访问,即使是private;类外部无法访问protected/private成员 .

B.在有继承的情况下,

   (先确定类继承方式,

    再确定继承后子类的新成员属性,

    最后确定子类内部/外部的访问权限:!!!此时即使是在子类的内部也不能访问父类的private

     )

1.若是public继承的话,父类的public/protected/private属性继承到子类时,均不会变化(新成员)

          在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

          在子类外部访问时,无法访问子类的新成员protected/private

2.若是protected继承的话,父类的public/protected/private属性继承到子类时,会变化为(新成员)protected/protected/private

          在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

          在子类外部访问时,无法访问子类的新成员protected/private

3.若是private继承的话,父类的public/protected/private属性继承到子类时,会变化为(新成员)private/private/private

          在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

          在子类外部访问时,无法访问子类的新成员protected/private

在这里插入图片描述

● 请你来说一下C++中struct和class的区别

参考回答:
在C++中,可以用struct和class定义类,都可以继承。区别在于:struct的默认继承权限和默认访问权限是public,而class的默认继承权限和默认访问权限是private。
另外,class还可以定义模板类形参,比如template <class T, int i>。

● 请你回答一下C++类内可以定义引用数据成员吗?

参考回答:
可以,必须通过成员函数初始化列表初始化。

#include
using std::cout;
using std::endl;
class A{
public:
A(int &b):a(b){}
int &a;
};
int main()
{
int b = 10;
A a(b);
cout << a.a <<endl;
return 0;
}



这篇关于C++ 类和数据抽象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程