c++ 类的基础

原创 2016年06月01日 23:42:29

类的访问控制

类中主要有两部分
成员函数
成员变量
分三个级别
+ public
+ protected
+ private
定义一个简单的类A

class A{
private:
    int a=0;
public:
    int b=1;
    void cout_a();
protected:
    int c=2;
};
void A::cout_a(void)
{

    cout<<"a"<<a<<endl;
}

这里
public可以被实例(类的对象)访问
protected和private则不可以被外部访问
二者区别为protected可以被子类访问,但是private只能被内部接口访问
对于一个对象

A a
cout<<a.a<<a.b<<a.c<<endl;

编译器会报错

error: 'int A::a' is private
error: 'int A::c' is protected

但是我们可以通过内部接口cout_a来访问A::a

 a.cout_a();

这就是所谓的隐藏实现,访问控制
这里有两方面考虑
一是让客户端程序员无法触及他们不应该触及的地方,防止类被修改
二是类的设计者可以任意修改类内部的实现方式而不影响客户端程序员

类的继承

继承方式
多重继承
继承的访问限制
虚函数
类的构造
静态变量
友元函数

这里重新强调一下三种访问权限
public:可以被任意实体访问,包括该类中的函数,子类中的函数,友元函数以及该类的对象访问
protected:只允许子类及本类的成员函数以及友元函数访问,该类对象不可以访问
private:只允许本类的成员函数,以及其友元函数访问,不可被子类中的函数以及对象访问

除此以外强调一下三种继承方式

Tables public: protected: private:
public继承 public protected x
protected继承 protected protected x
private继承 private private x

意味着public继承的时候,原有的父类的public还是piblic,protected还是protected,但是private不可以访问了
举个例子

class B:public A{

public:
    void cout_c();

};
void B::cout_c()
{
    cout<<"c"<<c<<endl;
    cout<<"a"<<a<<endl;
}
B b;
b.cout_c();

则会报错

error: 'int A::a' is private

不可以被子类的成员函数访问,而c却可以被子类成员函数访问
这时候需要将cout_c中的对a的访问注释掉
然而需要注意的是,继承之后,cout_a()函数还是public,还是可以访问的。并且通过cout_a()这个父类的函数接口可以访问a这个成员变量。但是,这是当B类中没有定义该函数的情况下才可以实现的,调用的是A中的cout_a()
举个例子

void A::cout_a(void)
{

    cout<<"a"<<a<<endl;
    cout<<"b"<<b<<endl;
}
class B:public A{

    int b=10;
public:
    void cout_c();

};

B b;
b.cout_a();

此时输出的a和b是A类中定义的值,而不是b=10

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++的基础知识——类

  • 2010年10月06日 16:28
  • 387KB
  • 下载

halcon/c++接口基础 之 HALCON图像变量类

图像变量在HALCON/C++中,HObject是一个基类,可以表示图像变量。另外还有三种类继承自HObject. Class HImage 处理图像 Class HRegion 处理区域 Class...

友元类(C++基础教学)

  • 2012年04月22日 13:57
  • 4.66MB
  • 下载

【C++基础之十】友元函数和友元类

【C++基础之十】友元函数和友元类 1.概述 友元提供了一种 普通函数或者类成员函数 访问另一个类中的私有或保护成员 的机制。也就是说有两种形式的友元: (1)友元函数:普通函数对一...
  • haiross
  • haiross
  • 2015年03月31日 13:58
  • 261

用于C++的基础网络类

  • 2008年12月17日 10:19
  • 156KB
  • 下载

c++可重用的N个基础类

  • 2008年11月19日 18:43
  • 3.41MB
  • 下载

《C++语言基础》实践参考——方程也是类

返回:贺老师课程教学链接 项目要求【项目5-方程也是类】设计一元一次方程类,求形如ax+b=0的方程的解。例如:输入3x-8=0时,输出的方程的解为x=2.66667;再如:输入5s+18=0时,输出...

C++程序设计基础PPT课件5-类与对象

  • 2008年03月22日 00:35
  • 6.57MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++ 类的基础
举报原因:
原因补充:

(最多只允许输入30个字)