请问Thinking C++ 的一个题目

pp_dll 2005-10-17 05:00:09
//: C08:StringStack.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Using static const to create a
// compile-time constant inside a class



#include <string>
#include <iostream>
using namespace std;

class StringStack {
static const int size = 100;
const string* stack[size];
int index;
public:
StringStack();
void push(const string* s);
const string* pop();
};

StringStack::StringStack() : index(0) {
memset(stack, 0, size * sizeof(string*));
}

void StringStack::push(const string* s) {
if(index < size)
stack[index++] = s;
}

const string* StringStack::pop() {
if(index > 0) {
const string* rv = stack[--index];
stack[index] = 0;
return rv;
}
return 0;
}

string iceCream[] = {
"pralines & cream",
"fudge ripple",
"jamocha almond fudge",
"wild mountain blackberry",
"raspberry sorbet",
"lemon swirl",
"rocky road",
"deep chocolate fudge"
};

const int iCsz =
sizeof iceCream / sizeof *iceCream;

int main() {
StringStack ss;
for(int i = 0; i < iCsz; i++)
ss.push(&iceCream[i]);
const string* cp;
while((cp = ss.pop()) != 0)
cout << *cp << endl;
} ///:~



请问为什么 static const int size = 100;放在类里通不过,哪个高手能不能给我讲讲Const

...全文
396 16 打赏 收藏 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
K 2005-10-18
  • 打赏
  • 举报
回复
新的编译器支持这种写法
gwhnc 2005-10-18
  • 打赏
  • 举报
回复
编译器版本问题,新的编译器应该能够支持
syscoder 2005-10-18
  • 打赏
  • 举报
回复
请问为什么 static const int size = 100;放在类里通不过,哪个高手能不能给我讲讲Const
即使在类体中赋值了,仍须要在类体外进行定义,否则就会出错
但这种写法在vc6下通不过,devc++没有问题的
jpopop 2005-10-18
  • 打赏
  • 举报
回复
class StringStack {
static const int size;
..............

};

const StringStack::size = 100;
JohnTitor 2005-10-18
  • 打赏
  • 举报
回复
————————————————————————————————
图像处理工具软件
通过图像处理工具软件的编制,熟悉并掌握图像处理软件的设计过程。
实验内容:
(1)具有图像大小调整、翻转、投影、平移、缩放、旋转、分割功能;
(2)能够显示直方图;
(3)具有图像增强功能(例如:去噪、灰度、平滑、锐化等);
(4)具有图像压缩功能;
(5)可将图像文件保存、打开、重新编辑。

————————————————

不小了
pp_dll 2005-10-18
  • 打赏
  • 举报
回复
我已经知道了,谢谢各位。
现在我想要做一个小Project,要求如下:

————————————————————————————————
图像处理工具软件
通过图像处理工具软件的编制,熟悉并掌握图像处理软件的设计过程。
实验内容:
(1)具有图像大小调整、翻转、投影、平移、缩放、旋转、分割功能;
(2)能够显示直方图;
(3)具有图像增强功能(例如:去噪、灰度、平滑、锐化等);
(4)具有图像压缩功能;
(5)可将图像文件保存、打开、重新编辑。

————————————————
我希望不用MFC,直接用C++提供的库来完成,我该怎么入手。
pengwjeagles 2005-10-18
  • 打赏
  • 举报
回复
对 类的静态成员 要在外部定义!
oceanblueboy 2005-10-18
  • 打赏
  • 举报
回复
zhaokugua(老小笨笨)说得不错,静态数据成员只能在类声明外分配成员和初始化
zhaokugua 2005-10-18
  • 打赏
  • 举报
回复
静态常量的初始化只能在类的外边进行,虽然新的标准好象对整形的可以放在里面,但至少VC6还不行,
csdolauli 2005-10-18
  • 打赏
  • 举报
回复
要在外面再定义一下const int StringStack::size;
chenminyi 2005-10-18
  • 打赏
  • 举报
回复
static 成员属于类型,所有该类对象共有。在一本数据结构的书上就用这个方法来实现new,可能也与编译器有关,C++ 程序设计语言上有些代码在VC上就不行
Pigwen 2005-10-18
  • 打赏
  • 举报
回复
书上不是说有些编译器可能不支持这种写法得嘛。新的编译器应该没有问题的
kobefly 2005-10-17
  • 打赏
  • 举报
回复
静态变量是属于整个类的

不是某个对象的

qhfu 2005-10-17
  • 打赏
  • 举报
回复
请问为什么 static const int size = 100;放在类里通不过,哪个高手能不能给我讲讲Const

在新的编译器中应该是可以的, 这是c++标准中规定的,,

bm1408 2005-10-17
  • 打赏
  • 举报
回复
基础知识,你应该看看static类型类变量到底在那里开辟,
pp_dll 2005-10-17
  • 打赏
  • 举报
回复
也就是摘自Thinking C++的那段代码编译通不过,是不是作者错了???
内容概要:本文针对传统彩色数字图像加密算法存在的密钥空间有限、随机性不足及抗干扰能力弱等问题,提出一种结合混沌系统与DNA编码的复合型彩色图像加密解密方案。通过混沌系统生成伪随机序列,对图像RGB三通道像素进行置乱与混淆,并利用DNA编码规则实现信息的高维扩散与并行处理,从而提升加密强度与安全性。文章重点对该方案的抗噪声与抗裁剪性能进行了系统性分析,实验结果表明该算法具备大密钥空间、强加密随机性,且在面对高斯噪声、椒盐噪声干扰及不同程度裁剪攻击时仍能较好恢复图像内容,展现出优良的鲁棒性与实用性。; 适合人群:具备一定图像处理、密码学基础知识的科研人员及研究生,或从事信息安全、多媒体通信领域的技术人员。; 使用场景及目标:①应用于网络环境下的彩色图像安全传输与私密存储,防范信息窃取与篡改;②为高鲁棒性图像加密技术的研究提供理论支持与实验验证,推动复合加密算法在实际工程中的落地应用。; 阅读建议:建议读者结合文中提出的加密流程与实验设计,自行复现算法并对不同类型的图像数据进行测试,重点关注混沌参数敏感性、DNA编码规则选择及不同干扰场景下的解密效果,以深入理解算法的抗干扰机制与优化空间。
【不讲道理,只给数据】网上讲 JS 性能的文章大多只给结论不给数据。这个包把 8 个常见优化手法真的跑了一遍,把耗时与提速倍数写出来——包括 3 项「优化后反而更慢」的结果。 ■ 实测(本机 node 实跑,见包内 04 文件) · 按 id 查找:Map 代替 find → 680 倍 · 数组去重:Set 代替双重循环 → 90 倍 · 记忆化递归:加缓存 → 800 倍 · 深拷贝:structuredClone 反而比 JSON 慢(0.44x) · 字符串拼接:现代 V8 下 += 与 join 几乎无差别(0.9x) ■ 资源内容 · 01_优化实战/:bench.js + run_all.js,8 项 before/after 基准,可直接跑,也能改成测你自己的代码 · 02_单元测试示例/:6 个工具函数 + Node 内置测试器写的测试(零依赖,不用装 Jest) · 03_工程化配置模板/:ESLint 9 扁平配置、Prettier、Vite 手动分包、Webpack 5 持久化缓存、package.json 脚本 + 逐项说明 · 04/05 真实运行结果:程序实跑输出,非手写示例 · 06_优化清单30条.md:每条标注实测结论 · 07_自检脚本:一键重跑测试与基准 ■ 使用方法 1)只需 Node 18+,不用 npm install:node 01_优化实战/run_all.js 即可看对比表 2)单元测试:cd 02_单元测试示例 && node --test 3)用 bench.js 量你项目里最慢的函数,先记基线再动手改 4)工程化配置直接拷进项目,重点看 03 里「为什么这么配」 ■ 说明 全部代码原创,可直接用于你的项目。基准数字因 CPU 与 Node 版本略有差异,趋势一致。

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧