首页 > 编程语言 >026:编程填空:统计动物数量

026:编程填空:统计动物数量

时间:2022-09-01 18:46:29浏览次数:48  
标签:num int 编程 number Dog 026 Animal 填空 Cat

知识点1:static静态变量在类内声明,但必须在类外初始化

知识点2:构造函数不能是虚函数

知识点3:如果基类构造函数里所有参数有缺省值,那么派生类函数可以不为其初始化,基类会自行用缺省值初始化变量

知识点4:一个派生类对象消亡时,除了会调用该派生类的析构函数,还会调用基类的析构函数(先派生后基类)

i.

 1 #include <iostream>
 2 using namespace std;
 3 class Animal{
 4     public:
 5         static int number;
 6         Animal(int num = 1){Animal::number = Animal::number + num;}
 7         virtual ~Animal(){-- Animal::number;}
 8 }; 
 9 int Animal::number = 0;
10 
11 class Dog:public Animal{
12     public:
13         static int number;
14         Dog(int num = 1){
15             Dog::number = Dog::number + num;
16         }
17         ~Dog(){-- Dog::number;}
18 };
19 int Dog::number = 0;
20 
21 class Cat:public Animal{
22     public:
23         static int number;
24         Cat(int num = 1){
25             Cat::number = Cat::number + num;
26         }
27         ~Cat(){-- Cat::number;}
28 };
29 int Cat::number = 0;
30 void print() {
31     cout << Animal::number << " animals in the zoo, " << Dog::number << " of them are dogs, " << Cat::number << " of them are cats" << endl;
32 }
33 
34 int main() {
35     print();
36     Dog d1, d2;
37     Cat c1;
38     print();
39     Dog* d3 = new Dog();
40     Animal* c2 = new Cat;
41     Cat* c3 = new Cat;
42     print();
43     delete c3;
44     delete c2;
45     delete d3;
46     print();
47 }

ii.

 1 #include <iostream>
 2 using namespace std;
 3 class Animal{
 4     public:
 5         static int number;
 6         Animal(/*int num = 1*/){}
 7         virtual ~Animal(){-- Animal::number;}
 8 }; 
 9 int Animal::number = 0;
10 
11 class Dog:public Animal{
12     public:
13         static int number;
14         Dog(int num = 1){
15             Animal::number = Animal::number + num;
16             Dog::number = Dog::number + num;
17         }
18         ~Dog(){-- Dog::number;}
19 };
20 int Dog::number = 0;
21 
22 class Cat:public Animal{
23     public:
24         static int number;
25         Cat(int num = 1){
26             Animal::number = Animal::number + num;
27             Cat::number = Cat::number + num;
28         }
29         ~Cat(){-- Cat::number;}
30 };
31 int Cat::number = 0;
32 void print() {
33     cout << Animal::number << " animals in the zoo, " << Dog::number << " of them are dogs, " << Cat::number << " of them are cats" << endl;
34 }
35 
36 int main() {
37     print();
38     Dog d1, d2;
39     Cat c1;
40     print();
41     Dog* d3 = new Dog();
42     Animal* c2 = new Cat;
43     Cat* c3 = new Cat;
44     print();
45     delete c3;
46     delete c2;
47     delete d3;
48     print();
49 }

2个代码体现了知识点3

标签:num,int,编程,number,Dog,026,Animal,填空,Cat
From: https://www.cnblogs.com/balabalabubalabala/p/16647496.html

相关文章

  • Linux系统编程 —读写锁rwlock(转载~)
    读写锁是另一种实现线程间同步的方式。与互斥量类似,但读写锁将操作分为读、写两种方式,可以多个线程同时占用读模式的读写锁,这样使得读写锁具有更高的并行性。读写锁的特性......
  • [ROS学习] 12.参数的使用与编程方法
    笔记参考:【ROS学习笔记】12.参数的使用与编程方法内容参考:基于B站ROS公开课:【古月居】古月·ROS入门21讲更多详情:http://wiki.ros.org/Parameter%20Server本节说明至......
  • C#并行编程:简要
    通过编程发挥多核或多处理器优势的方式称为并行编程。它是多线程这个更宽泛概念的一个子集。多线程API和以下可以发挥多核处理器能力的各种结构:并行LINQ(PLINQ)Parallel......
  • 15.shell编程
    Linux的shell编程可以理解为Windows里面的powershell和cmd新建文件与执行在root文件夹新建shell文件后写入命令cd/rootvitest.sh#shell文件后缀为.sh添加执......
  • 并发编程Bug起源:可见性、有序性和原子性问题
    以前古老的DOS操作系统,是单进行的系统。系统每次只能做一件事情,完成了一个任务才能继续下一个任务。每次只能做一件事情,比如在听歌的时候不能打开网页。所有的任务操作都按......
  • 无服务器计算编程语言采用
    无服务器计算编程语言采用本文介绍了主要云供应商提供的不同编程语言和运行时。采用情况和趋势是什么。每个云供应商都提供哪些编程语言?Serverlessprogramminglangua......
  • 我在编程学校学到的是……
    我在编程学校学到的是……在我的第一篇博客中,我开玩笑说我不知道​​我在Python的Pandas库中做了什么,但我喜欢弄清楚事情。我参加了GeneralAssembly的数据科学沉浸......
  • Go 网络编程
    互联网协议前言现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网......
  • 基于padavan(openwrt) MIPS 的OpenSSL编译安装和编程基础
    设备还是之前那个e8820s 先把gccmakeperl装了opkginstallgccmakeperl这里有个问题,就是openssl1.1.0之后的版本要求perl5.10,opkg安装的是5.28,运行./Con......
  • 8/31 深入理解计算机系统 第十一章 网络编程
    第十一章网络编程11.1客户端-服务器编程模型包含一个服务器进程和多个客户端进程。服务器管理某种资源,并通过操作这种资源给客户端提供某种服务。基本操作是:事务一个......