模板类就是将类定义成模板的形式。

C++中好像不区分内部类与嵌套类两个名词。

内部类与嵌套类都是指在类中定义类。

局部类是指在函数中定义类。

(c++不能在函数中定义函数(python可以)。c++在类中定义的函数也就是成员函数。)
(c++内部类与java内部类最大的区别就是:c++的内部类对象没有外部类对象的指针,不能访问外部类对象的非静态成员;java的非静态内部类对象有外部类对象的指针,能访问外部类对象的非静态成员。
java 中右多个内部类,还有匿名内部类。

通过嵌套类定义自己的队列Queue:

Queue类里面嵌套一个Node类:

编写Queue.h文件:

#ifndef QUEUE_H_#define QUEUE_H_template<class Type>
class Queue{
private:enum {Q_SIZE = 10};class Node{public:Type data;Node * next;Node(const Type data) : data(data), next(0) {}};  Node *front;Node *rear;int curSize;int maxSize;
public:Queue(int size = Q_SIZE);~Queue();bool isFull() const;bool isEmpty() const ;bool enQueue(const Type data);bool deQueue();void tarverseQueue() const;
};#endif

编写Queue.cpp文件:

#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <valarray>
#include "Queue.h"
using std::cout;
using std::endl;template<class Type>
Queue<Type>::Queue(int size) : maxSize(size) {front = rear = 0;curSize = 0;
}template<class Type>
Queue<Type>::~Queue() {Node *tmp;while (front != 0) {tmp = front;front = front->next;delete tmp;}
}template<class Type>
bool Queue<Type>::isFull() const {return curSize >= maxSize;
}template<class Type>
bool Queue<Type>::isEmpty() const {return curSize == 0;
}template<class Type>
bool Queue<Type>::enQueue(const Type data) {if (isFull()) {return false;}   Node *node = new Node(data);if (front == 0) {front = node;} else {rear->next = node;}   rear = node;curSize++;return true;
}template<class Type>
bool Queue<Type>::deQueue() {if (isEmpty()) {return false;}Node *tmpNode = front;front = front->next;delete tmpNode;if (front == 0) {rear = 0;}curSize--;return true;
}template<class Type>
void Queue<Type>::tarverseQueue() const {Node *head = front;while (head != 0) {cout << head->data << endl;head = head->next;}
}int main(int argc, char *argv[]) {Queue<int> queue(10);queue.enQueue(11);queue.enQueue(12);queue.tarverseQueue();return 0;
}

参考资料:

https://blog.csdn.net/solariens/article/details/52314896

https://blog.csdn.net/lw585625/article/details/84085249

C++模板类嵌套类内部类局部类的区别相关推荐

  1. 【Java 面向对象】基础、Java程序的内存划分、嵌套类(内部类、静态嵌套类)、局部类、接口的升级问题(默认方法、静态方法)、instanceof

    面向对象 对象的内存 复杂对象的内存 对象数组的内存 思考:方法存储在哪里? Java程序的内存划分 this.super 注解(Annotation) 访问控制(Access Control) to ...

  2. C++ 学习笔记之(19) new、delete表达式、RTTI(运行时类型识别)、枚举、类成员指针、嵌套类、局部类、位域、volatile、extern C

    C++ 学习笔记之(19) new.delete表达式.RTTI(运行时类型识别).枚举.类成员指针.嵌套类.局部类.位域.volatile.extern C C++ 学习笔记之(19) new.de ...

  3. java嵌套类与内部类

    一.嵌套类(Nested Classes) 使用嵌套类减少了命名冲突,一个内部类可以定义在一个类中,一个方法中甚至一个表达式中. (1)定义 A nested(嵌套) class is any cla ...

  4. Kotlin学习笔记 第二章 类与对象 第十节 内部类嵌套类

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  5. Java嵌套类(Nested Classes)总结

    Nested Classes定义 在java语言规范里面,嵌套类(Nested Classes)定义是: A nested class is any class whose declaration o ...

  6. 类的相关知识(五)友元和嵌套类

    目录 友元函数 友元类 嵌套类 在类的外面定义嵌套类 访问权限 局部类 友元函数 类的友元函数,该函数可以访问类中所有的成员,包括成员变量和成员函数 class Role {int hp;int mp ...

  7. 38、C++ Primer 4th笔记,特殊工具与技术,嵌套类

    1.在一个类内部再定义另外一个类,这样的类称为嵌套类(nested class),也称为嵌套类型(nested type).嵌套类最常用于执行类. 嵌套类是独立的类,基本上与它们的外围类不相关,因此, ...

  8. C++ 嵌套类与局部类

    代码编译运行环境:VS2017+Debug+Win32 文章目录 1.嵌套类 2.局部类 参考文献 1.嵌套类 在一个类体中定义的类叫作嵌套类.拥有嵌套类的类叫外围类. 定义嵌套类的初衷是建立仅供某个 ...

  9. 【java开发系列】—— 嵌套类与内部类

    嵌套类与内部类在java中使用的很广泛,为了避免难以理解,这里用了几个小例子,说明它的用法. 嵌套类与内部类的结构如下图 静态嵌套类 静态嵌套类,是一种在类之外声明的嵌套类,由于是静态的,所以不经过初 ...

最新文章

  1. .NET/C#中对自定义对象集合进行自定义排序的方法
  2. linux c/c++ 原子操作库 atomic atomic_flag 简介
  3. Ardino基础教程 25_8X8LED点阵
  4. C++大学教程(第九版)2016-07 保罗·戴特尔 (Paul Deitel)、 哈维·戴特尔 (Harvey Deitel)_cafbe(C++中文版)
  5. notes belonging to given user
  6. Java网页开发中model实现Serializable接口的原因
  7. vue inheritAttrs、$attrs和$listeners使用
  8. redis10--主从模式
  9. T-SQL语句之创建、修改、删除数据库
  10. Spring Batch 4.2.0.M1 发布,批处理应用编写框架
  11. 管理感悟:公司内斗,肯定是闲着的斗干活的
  12. xmind思维导图模板_思维导图模板
  13. 华为设备无线环境中的Portal认证
  14. Stata+PSM:倾向得分匹配分析简介
  15. 计算机连接拒绝访问,打印机拒绝访问,教您打印机拒绝访问怎么解决
  16. 【USB笔记】设备功能描述符Device Capability Descriptor
  17. Scratch软件界面介绍
  18. Linux--问题1--从用户态进入内核态
  19. 大厂app出海攻略|一个方法让app推广变现能力双效提升
  20. NASA开始调试校准韦伯望远镜18面金色镜子,需三个月

热门文章

  1. 两千内给力的大屏手机(二)
  2. Direct3D中的绘制(3)
  3. leetcode之回溯backtracing专题3
  4. 客户端配置_交换机作为STelnet客户端登录其他设备配置示例
  5. 前端radio单选框默认选中_开发记录篇前端内容1
  6. springboot如何对本地数据库增删改查_SpringBoot整合Mybatis实现数据库增删改查
  7. linux边看系统信息,Linux查看系统信息大全[备忘]
  8. java remove all_如何使用Java List等集合类的removeAll方法
  9. python sql语句生成_python Django 生成sql语句
  10. linux 固定ip_linux固定IP