当前位置: 首页 > wzjs >正文

免费flash网站源码it培训班

免费flash网站源码,it培训班,wordpress可the7,电商怎么做才能赚钱C 面向对象编程 一个类可以定义无数个对象,每一个对象都有自己的成员变量,但是他们共享一套成员方法。 构造函数的初始化列表和直接在构造函数中构造的区别:初始化列表是用来初始化成员类的,用来调用成员的构造函数的一个是先调用…

C++ 面向对象编程

一个类可以定义无数个对象,每一个对象都有自己的成员变量,但是他们共享一套成员方法。

构造函数的初始化列表和直接在构造函数中构造的区别

  • 初始化列表是用来初始化成员类的,用来调用成员的构造函数的

  • 一个是先调用默认构造后初始化,一个是调用构造函数初始化

  • 即:int a = 10int a; a = 10 的区别。对于普通类型区别不大。

初始化列表的默认初始化顺序:成员函数的定义顺序。

静态成员变量:类内声明,类外定义和初始化,不属于对象,属于类级别。
静态成员方法:可以用类名调用。(普通成员函数不能用类名调用的原因:需要隐式传入成员 this 指针,不传缺少参数无法编译。)
常成员方法:接收的 this 指针为 const 类型。

模版函数:建议定义在头文件

辨析:为什么模版函数,内联函数要定义在头文件中,普通函数不建议定义在头文件中?
原因:在函数编译链接过程中,函数/全局变量/静态变量/常量常量变量等会产生符号,且定义在 头文件中的普通函数将会展开,在链接时,连接器如果发现同名的函数符号,会直接报错(error: multiple definition of ‘yourFunction’)。而对于模版函数和内联函数会生成一个弱符号(weak sym),连接器会从多个头文件展开后的源文件中选取一个链接,不会因出现同名弱符号而报错。且由于模版本身是不编译的,所以在一个文件中定义的模版一般无法在另一个文件中使用,因为模版不编译而不产生符号,导致使用的文件产生的 “UND” 找不到对应的函数定义。(有声明未定义的函数会别标志为“UND”并且在链接过程中在其他 .o 文件中寻找定义。)

new 和 delete 重载的应用 -> 对象池

#include <iostream>using namespace std;template <class T>
class Queue {
public:explicit Queue(const T& data = T()): _front(new QueueItem(data)) { _rear = _front; }~Queue() {if (empty()) {delete _front;return;}// 略}void push(const T& data) {QueueItem* temp = new QueueItem(data);_rear->_next = temp;_rear = temp;}void pop() {if (empty()) {perror("Queue is empty"); exit(1);}auto temp = _front->_next;delete _front;_front = temp;if (_front->_next == nullptr) {_rear = _front;}}[[nodiscard]] T& front() const {if (empty()) {perror("Queue is empty"); exit(1);}return _front->_next->_data;}[[nodiscard]] bool empty() const {return _front->_next == nullptr;}private:struct QueueItem {QueueItem(T data = T()): _next(nullptr), _data(data) {}void* operator new(size_t size) {if (_itemPool == nullptr) {_itemPool = (QueueItem *)new char[POOL_SIZE * sizeof(QueueItem)];auto p = _itemPool;for (; p < _itemPool + POOL_SIZE - 1; p++) {p->_next = p + 1;}p->_next = nullptr;}auto p = _itemPool;_itemPool = _itemPool->_next;return p;}void operator delete(void* p) {auto *ptr = (QueueItem *)p;ptr->_next = _itemPool;_itemPool = ptr;}QueueItem* _next;T _data;static QueueItem *_itemPool;static const int POOL_SIZE = 10000;};QueueItem *_front;  // 指向头节点QueueItem *_rear;   // 指向尾节点};template <class T>Queue<T>::QueueItem *Queue<T>::QueueItem::_itemPool = nullptr;int main() {Queue<int> que;for (int i = 0; i < 100; i++) {que.push(1);que.push(2);que.push(3);que.push(4);que.push(5);}for (int i = 0; i < 20; i++) {cout << que.front() << endl;que.pop();}return 0;
}

可通过重载 new 和 delete 运算符实现顺序链表的连接池。

http://www.dtcms.com/wzjs/115460.html

相关文章:

  • 睢宁网站建设2023年8月新冠疫情
  • 高清做 视频在线观看网站seo接单平台有哪些
  • 网站上广告企业网站推广有哪些
  • 继续教育网站怎么做不了作业辅导班
  • 网站是否必须做认证关键词怎么选择技巧
  • wordpress加密数据库文件优化大师最新版本
  • 菏泽网站建设兼职快速优化seo软件推广方法
  • 网站关键词推广哪家好搜索引擎优化包括哪些
  • 做网站需要哪些准备帮人推广注册app的平台
  • 个人网站广告投放网络营销的主要传播渠道
  • linux系统服务器怎么做网站b2b电商平台有哪些
  • 焦作建设银行门户网站网页设计工资一般多少
  • 网站建设服务公司哪家好西安排名seo公司
  • 做有支付系统的网站一般需要多少钱2020年可用好用的搜索引擎
  • 揭阳智能模板建站网络营销推广方案前言
  • 阀门网站设计深圳英文站seo
  • 书怎么做pdf下载网站怎么建网站详细步骤
  • 婚庆公司排名关键词优化哪家好
  • 做网站的公司主要做shm黄金网站app大全
  • 西宁网站系统建设有哪些免费推广软件
  • 威海北京网站建设化工网站关键词优化
  • 企业官网有哪些网站优化seo培训
  • 网络设计报告机房环境网站关键词seo费用
  • 如何做淘宝优惠券网站上海互联网管理系统推广公司
  • 哪里有网站建设服务seo快速排名软件网址
  • 建设带数据搜索的网站百度服务热线电话
  • 重庆网站设计建设企业网站建设方案策划书
  • java做网站例子seo优化报价公司
  • 初中毕业学网站开发工程师图片识别
  • 浙江政府网站大建设推广普通话手抄报图片大全