- 博客(12)
- 资源 (4)
- 收藏
- 关注
原创 条款45: 运用成员函数模板接受所有兼容类型
真实指针做得很好的一件事是,支持隐式转换(implicit conversions),比如如下代码:class Top {};class Middle : public Top {};class Bottom : public Middle {};Top *pt1 = new Middle; // 将Middle转化为Top*Top *pt2 = new Bottom; // 将Bottom转化为Top*const Top *pct2 = pt1; // 将Top*转化为const
2020-12-27 21:04:51 109
原创 条款44: 将参数无关的代码剥离templates
假如你想为固定尺寸的正方矩阵编写一个template.该矩阵的性质之一是支持矩阵逆运算:template<typename T,std::size_t n>class SquareMatrix {public: //... void inver(); // 求逆矩阵};这个 template接受一个类型参数T,和一个类型为size_t的非类型参数;然后考虑如下代码调用:SquareMatrix<double 5> sm1;sm1.invert(); // 调用Sq
2020-12-20 21:32:30 108
原创 第七章 进程调度: 介绍
7.3 先进先出(FIFO):Example_1: 工作平均周转时间为(100+110+120)/3=120Example_2: 工作平均周转时间为(10+20+30)/3=207.4 最短任务优先(SJF)
2020-12-20 11:20:31 228 1
原创 第6章 机制: 受限直接执行
6.2 问题1:受限制的操作用户模式下运行的代码会受到限制,例如在用户模式下运行时候不能发出I/O请求;内核模式下运行的代码可以做它喜欢的事,包括特权操作;但是用户如果想从用户模式转到内核模式应该怎么做? 这时候就要靠特殊的陷阱(trap)指令,该指令同时跳入内核并将特权级别提升到内核模式;...
2020-12-18 21:51:08 113
原创 第5章 插叙:进程API
5.1 fork系统调用p1.c代码:#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(int argc, char *argv[]){ printf("hello world (pid:%d)\n", (int) getpid()); int rc = fork(); if (rc < 0 ) { fprintf(stderr, "
2020-12-14 21:56:51 384
原创 条款43: 学习处理模板化基类内的名称
假设我们需要撰写一个程序,它能够传送信息到若干不同的公司去:class CompanyA {public: // ... void sendClearText(const std::string &msg); void sendEncrypTed(const std::string &msg);};class CompanyB {public: // ... void sendClearText(const std::string &
2020-12-14 17:29:34 122
原创 条款42:了解typename的双重意义
template<class T> class Widget; //使用classtemplate<typename T> classWidget; //使用typename当我们声明template类型参数,class和typename的意义完全相同
2020-12-13 21:41:14 132
原创 第4章 抽象:进程
4.3 进程创建操作系统运行第一件事情就是将代码和所有静态数据加载到内存中,加载到进程的地址空间中4.4 进程状态运行: 进程正在处理器上运行,意味着它正在执行指令就绪:进程已经准备好运行阻塞:一个进程执行了某种操作,知道发生其他事件才会准备运行...
2020-12-13 14:52:26 93
原创 第2章:操作系统介绍
1. 虚拟化CPU#include <stdio.h>#include <stdlib.h>#include "common.h"int main(int argc, char *argv[]){ if (argc != 2) { fprintf(stderr, "usage: cpu <string>\n"); exit(1); } char *str = argv[1]; while (1) { printf("%s
2020-12-13 13:54:05 181
原创 条款39:明智而审慎地使用private继承
考虑如下代码:class Person {};class Student : private Person {};void eat(const Person& p); // 任何人都会吃void study(const Student& s); // 只有学生在校学习Person p; // p是人Student s; // s是学生eat(p); // 没问题eat(s); // 错误!难道学生不是人?上述eat(s)错误的原因有两点:如果classes之
2020-12-06 21:18:18 216
《Flash.ActionScript3.0从入门到精通》笔记 (1)
2018-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人