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

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

java,c,c++ 语言之间基本数据类型的比较

转载自http://blog.csdn.net/wu928320442/article/details/5825170 当要进行底层移植的时候肯定会遇到这些问题。特整理了下。   java...
  • caihongshijie6
  • caihongshijie6
  • 2013年11月01日 11:23
  • 2001

C++11标准基本内置数据类型

C++11标准基本内置数据类型标签(空格分隔): C++11 C++ C++11标准定义了包括算术类型(arithmetic type)和空类型(void)在内的基本数据类型。其中算术类型包...
  • itmr_liu
  • itmr_liu
  • 2016年07月10日 07:00
  • 1365

C#中数据类型的基本了解

bool -> System.Boolean (布尔型,其值为 true 或者 false) byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 2...
  • aa2397199142
  • aa2397199142
  • 2016年01月21日 11:45
  • 1196

C++的基础知识——类

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

C++(包括c语言基础、数据类型、函数、指针、面向对象、类与对象、多态继承、重载等等)

  • 2010年11月10日 14:32
  • 7.58MB
  • 下载

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

  • 2008年03月22日 00:35
  • 6.57MB
  • 下载

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

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

c++面试题,包含基础题和类的相关题目

  • 2012年04月23日 12:44
  • 55KB
  • 下载

用于C++的基础网络类

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

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

  • 2008年11月19日 18:43
  • 3.41MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++ 类的基础
举报原因:
原因补充:

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