主题:C++的一些FAQ
格子裙
[专家分:15760] 发布于 2006-08-12 17:48:00
Bjarne Stroustrup对一些常见问题的答复,不一定因为是Bjarne Stroustrup说的就怎么怎么样,不过毕竟他是个很有水平的
原文的地址为:http://www.research.att.com/~bs/bs_faq.html
[建议E文好的看E文的,我最开始没找到翻译的,就是自己对着金山词霸慢慢看的,不过看了些就放弃了...大家不要学我]
中文的从网上发现的,翻译为左轻侯,这里只是一部分的问题
问题 楼层
我如何写个非常简单的程序? 1
为什么一个空类的大小不为 0? 2
为什么析构函数默认不是 virtual 的? 3
为什么不能有虚拟构造函数? 4
我能够在构造函数中调用一个虚拟函数吗? 5
为什么重载在继承类中不工作? 6
怎样将一个整型值转换为一个字符串? 7
我应该将“const”放在类型之前还是之后? 8
“int* p”正确还是“int *p”正确? 9
为什么 delete 不会将操作数置 0? 10
我能够写“void main()”吗? 11
我如何定义一个类内部(in-class)的常量? 12
我为什么必须使用一个造型来转换*void? 13
有没有“指定位置删除”(placement delete)? 14
为什么编译要花这么长的时间? 15
我必须在类声明处赋予数据吗? 16
我能防止别人继承我自己的类吗? 17
为什么不能为模板参数定义约束(constraints)?18
什么是函数对象(function object)? 19
我应该如何对付内存泄漏? 20
我为什么在捕获一个异常之后就不能继续? 21
怎样从输入中读取一个字符串? 22
为什么 C++不提供“finally”的构造? 23
为什么我不能重载点符号,::,sizeof,等等? 24
使用宏有什么问题? 25
如果大家感觉好,希望顶一顶,多让些学习C++的朋友们都学习学习. [em2]
加油.!~~~~~~~~~~~~~~~~~ 同志们!
回复列表 (共61个回复)
31 楼
libo93122 [专家分:130] 发布于 2006-08-16 13:16:00
还有吗,呵呵,经典啊,
32 楼
yqzp [专家分:210] 发布于 2006-08-29 11:27:00
好贴!希望楼主继续发这样的好贴!
33 楼
CLO [专家分:2000] 发布于 2006-09-17 13:54:00
呵呵,格子,发那样的图片不太好的哦
我也有那个FAQ~~
34 楼
格子裙 [专家分:15760] 发布于 2006-09-17 17:25:00
这图是一白领.蛮喜欢的
35 楼
iuhiao [专家分:1330] 发布于 2006-09-18 17:54:00
顶
谢谢你以前对我的帮助
36 楼
mousexqshe [专家分:0] 发布于 2006-09-26 09:38:00
好贴,留着慢慢看!
37 楼
犀利沉埋 [专家分:30] 发布于 2006-09-26 21:46:00
同意27楼的,不过格子真的辛苦了!
38 楼
yaopeng [专家分:0] 发布于 2006-10-26 15:27:00
这个程序出了点错误,.不知道怎么解决
#include<iostream.h>
#include<stdlib.h>
typedef struct node{
char data ;
int weight;
node*parent;
node*lchild;
node*rchild;
}*bitree;
int i=0;
void InitHuffmanTree(bitree T)
{ char ch;
cin>>ch;
if(ch=='/')
T=NULL;
else
{ if(!(T=new node))
exit(0);
T->data=ch;
InitHuffmanTree(T->lchild);
InitHuffmanTree(T->rchild);
}
}
bitree T[60];
void InputWeight(bitree T)
{
if(T)
{if(T->lchild==NULL&&T->rchild==NULL)
cin>>T->weight ;
T[i].weight =T->weight;
InputWeight(T->lchild);
InputWeight(T->rchild);
i++;
}
}
int n=i;int m=n*2-1;
void SelectMin(bitree T,int j,int &p1,int &p2)
{ int m,n,t,k;
k=t=T[0].weight;
for(m=1;m<=j;m++)
if(T[m].weight<k)
{ k=T[m].weight;
p1=m;
}
for(n=1;n<=j;n++)
if(T[n].weight>=k&&T[n].weight<=t)
{ t=T[n].weight;
p2=n;
}
}
void CreateHuffmanTree(bitree T)
{//构造哈夫曼树,T[m-1]为其根结点
int i,p1,p2;
InitHuffmanTree(T); //将T初始化
InputWeight(T); //输入叶子权值至T[0..n-1]的weight域
for(i=n;i<m;i++)
{//共进行n-1次合并,新结点依次存于T[i]中
SelectMin(T,i-1,p1,p2);
//在T[0..i-1]中选择两个权最小的根结点,其序号分别为p1和p2
T[p1].parent=T[p2].parent=T[i];
T[i].lchild=T[p1]; //最小权的根结点是新结点的左孩子
T[i].rchild=T[p2]; //次小权的根结点是新结点的右孩子
T[i].weight=T[p1].weight+T[p2].weight;
} // end for
}
void main()
{
bitree T;
CreateHuffmanTree(T);
}
39 楼
wl19861202 [专家分:0] 发布于 2006-10-28 09:20:00
厉害...
40 楼
端木维持 [专家分:0] 发布于 2006-11-08 13:03:00
顶一下,说的不错!
我来回复