首页 > 编程语言 >C++快速入门 第十八讲:访问控制

C++快速入门 第十八讲:访问控制

时间:2023-08-18 14:55:25浏览次数:41  
标签:std string 第十八 访问控制 C++ Pig Animal theName public

访问控制:C++提供用来保护(保护意思是对谁可以调用某个方法和访问某一个属性加上一个限制)类里的方法和属性的手段

实例1:访问级别应用

 1 //级别            允许谁来访问
 2 //public           任何代码 
 3 //protected        这个类本身和它的子类 
 4 //private          只有这个类本身
 5 #include <iostream>
 6 #include <string>
 7 
 8 class Animal//定义Animal类
 9 {
10 public:
11     std::string mouth;
12     //std::string name;
13     
14     Animal(std::string theName);//类Animal的构造器 
15     void eat();
16     void sleep();
17     void drool();//流鼻涕
18 protected:
19     std::string name;
20 };
21 Animal::Animal(std::string theName)//类Animal构造器函数 
22 {
23     name = theName;
24 }
25 
26 class Pig:public Animal//类Pig继承于类Animal
27 {
28 public:
29     Pig(std::string theName);//类Pig的构造器
30     void climb();
31 };
32 Pig::Pig(std::string theName):Animal(theName)//类Pig的构造函数继承于类Animal的构造函数 
33 {
34     
35 } 
36 
37 class Turtle:public Animal//类Turtle继承于类Animal
38 {
39 public:
40     Turtle(std::string theName);//类Pig的构造器
41     void swim();
42 };
43 Turtle::Turtle(std::string theName):Animal(theName)//类Turtle的构造函数继承于类Animal的构造函数参数 
44 {
45     
46 }
47 
48 void Animal::eat()//Animal类中的方法函数
49 {
50     std::cout << "I'm eatting!" << std::endl;
51 }
52 void Animal::sleep()
53 {
54     std::cout << "I'm sleeping!Don't disturb me!" << std::endl;
55 }
56 void Animal::drool()
57 {
58     std::cout << "我是公的,看到母的会流口水 流口水。。。" << std::endl;
59 }
60 
61 void Pig::climb()//类Pig中的climb方法函数
62 {
63     std::cout << "我是一只漂亮的小母猪猪,我会上树,邱。。。" << std::endl;
64 }
65 void Turtle::swim()//类Turtle中的swim方法函数
66 {
67     std::cout << "我是一只小甲鱼,当母猪抓我,我就游到海里,哈。。。" << std::endl;
68 }
69 int main()
70 {
71     Pig pig("小猪猪");//定义一个对象pig,由于其继承于类Animal,
72     //且构造函数也继承于类Animal的构造函数,所以参数"小猪猪"将赋值给类pig中的名字属性name 
73     Turtle turtle("小甲鱼");//定义一个对象turtle
74     
75     //pig.name = "小甲鱼"; //由于name被保护起来,所以赋值将报错 
76     
77     std::cout << "这只猪的名字是:" << pig.name << std::endl;
78     std::cout << "每只乌龟都有个伟大的名字:" << turtle.name << std::endl; 
79 
80     pig.eat();
81     turtle.eat();
82     pig.climb();
83     turtle.swim();
84 
85     return 0;
86 }

使用private的好处:可以只修改某个类的内部实现,而不必重新修改整个程序。因为其他代码根本就访问不到private保护的内容

在同一个类中可以使用多个public:,private和protected:语句,但最好把你的元素集中到一个地方,可读性会更好。

protected

把基类的访问级别改为protected,如果原来是public的话。这将使得这个子类外部的代码无法通过子类去访问基类中的public

private

是在告诉编译器从基类继承来的每一个成员都当做private来对待,这意味着只有这个子类可以使用它从基类继承来的元素。

标签:std,string,第十八,访问控制,C++,Pig,Animal,theName,public
From: https://www.cnblogs.com/ybqjymy/p/17640496.html

相关文章

  • C++无法将类的成员函数赋值给一般的函数指针,解决方案
    遇到需要绑定回调函数的API接口。看了定义的函数指针,是静态的函数指针,将非静态的类成员函数赋值过去的时候,无法编译通过。将成员函数改成静态又得将整个类的内容都改成静态。这种情况下,可以构造匿名函数,引用this,这样可以在类中,将自己的成员函数赋值给需要的函数指针类型上:ser......
  • C++快速入门 第六讲:函数的重载
    函数重载:实质就是用同样的名字再定义一个有着不同参数类型及个数来实现不同操作的函数。实例1:改变同一函数的输入参数类型1#include<iostream>23voidconvertTemperature(doubletempIn,chartypeIn);4voidconvertTemperature(inttempIn,chartypeIn);5......
  • C++快速入门 第七讲:复杂的数据类型
    数组:可以把许多个同类型的值存储在同一变量名下实例1:输入的数据存储到数组中,并计算其和与平均值输出1#include<iostream>23usingnamespacestd;//使用作用域45intmain()6{7intarray[10];8inti;9intsum=0;10doubleaverage;......
  • C++快速入门 第八讲:复杂的数据类型——指针
    小知识:程序以文件的形式存储在硬盘,但它们却是在计算机的内存中运行对于变量可以通过变量名与地址两种方式进行索引,变量的地址在程序执行期间是不会发生变换的地址是计算机内存中的某个位置;指针是专门用来存放地址的特殊类型变量......
  • C++快速入门 第九讲:复杂的数据类型——指针02
    指针的类型必须与由它保存其地址的变量的类型一致,当某个变量的地址给了指针p时,就可以通过*p(即表示该地址的数据)来对该变量数据进行操作一定要牢记一个事实:指针所保存的是内存中的一个地址,它并不保存指向的数据的值本身。因此务必确保指针对应一个已经存在的变量或者一块已经分配......
  • C++快速入门 第十讲:复杂的数据类型——指针和数组
    计算机是把数组以一组连续的内存块保存的。数组的第一个元素的地址为该数组的基地址。实例1:数组元素地址打印1#include<iostream>23usingnamespacestd;45intmain()6{7constunsignedshortITEMS=5;8intintArray[ITEMS]={1,2,3,4,5}......
  • C++快速入门 第十一讲:结构
    结构是一种由程序员自己定义的、由其他变量类型组合而成的数据类型。其所能包含的变量的个数是没有限制的。实例1:简单数据库读写1#include<iostream>2#include<fstream>//文件操作3#include<windows.h>//为了使用Sleep()函数45structFishO......
  • C++快速入门 第十二讲:传值、传址和传引用
    实例1:值传递1#include<iostream>23voidchangeAge(intage,intnewAge);4intmain()5{6intage=24;//定义一个age,占一处地址7std::cout<<"Myageis"<<age<<"\n";89changeAge(age,ag......
  • C++快速入门 第二讲:从一个小程序说起
    cout(cout<<i表示变量i流向屏幕显示)是一个输出流对象,属于basic_ostream类的对象。ostream类在iostream头文件中定义。同理cin(回车后,键盘输入缓冲区内容流向cin流的内部缓冲区,cin>>xx操作便从这个缓冲区提取数据,即键盘输入流向程序)为输入流对象,C++标准库所使用的所有标识符(即类......
  • C++快速入门 第三讲:输入输出方法
    实例1:忽略输入字符串的前面部分字符输出1#include<iostream>//23usingnamespacestd;//名字空间45intmain()6{7charbuf[20];//只能存放19个字符,因为字符串以0结尾89cin.ignore(7);//忽略输入的前七个字符10cin.g......