- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C问题——指针
C问题——指针.txt20如果你努力去发现美好,美好会发现你;如果你努力去尊重他人,你也会获得别人尊重;如果你努力去帮助他人,你也会得到他人的帮助。 生命就像一种回音,你送出什么它就送回什么,你播种什么就收获什么,你给予什么就得到什么。.
主要目的是总结C/c++理一些常见的错误
希望相关方面有问题的朋友们可以先看看此贴,说不定对你有帮助,也可以省去一些重复问题.
/****所有代码都未加头文件,想运行请自行添加.*************************/
1:试图用cout输出全局类的析构.(可能是VC6的问题,如果你的编译器没出现问题,很好,)
class CDemo
{
public:
CDemo(const char *str);
~CDemo();
private:
char name[20];
};
CDemo::CDemo(const char* str)
{
strcpy(name,str);
cout cout:Construction called for name endl;
}
CDemo::~CDemo()
{
cout cout:Destruction called for name endl;
printf( printf:Destruction called for %s\n,name);
}
static CDemo GlobleObject(globeobject); //这个是我们关注的,cout:Destruction called for globeobject并不会出现
void main()
{
CDemo LocalObjectInMain(localobjectinmain);
CDemo * pHeapObjectInMain=new CDemo(heapobjectinmain);
CDemo *pHeapObjectInFunc=new CDemo(heapobjectinfunc);
static CDemo StaticObject=staticobject;
}
这里globeobject的析构并没有被显示出来,为何呢?
加一句printf你就知道为何了.
因为cout析构在GlobleObject析构前.
2.关于VC6的问题:
VC6对于friend,模板等几个bug,建议换VS测试.
如,重载操作符号,如果friend符号的定义在类体外会报错.
模板嵌套:
vector vector int bad; //error,VC6会把2维容器 认作输出符号.
vector vector int good;
此外VC6下编译模板,出现一堆警告的话,你在头文件前加
#pragma warning(disable:4786)
3.关于型参,实参不分,指针搞不清楚.
void Exchg1(int x, int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf(Exchg1:x=%d,y=%d\n,x,y);
}
void Exchg2(int x, int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf(Exchg2:x=%d,y=%d\n,x,y);
}
void Exchg3(int *x, int *y)
{
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
printf(Exchg3:x=%d,y=%d\n,*x,*y);
}
void main()
{
int a=4,b=6;
Exchg1 (a,b) ;
printf(a=%d,b=%d\n,a,b);
Exchg2 (a,b);
printf(a=%d,b=%d\n,a,b);
Exchg3(a,b) ;
printf(a=%d,b=%d\n,a,b);
}
4.C风格字符串与标准库类型string不分
int i;
char * ch = cchars; //这是C风格字符串,结尾有\0
char mch[] = mchars;
string str(ch); //string类的构造函数接收ch,并作转化
i = strcmp(ch,str); //error,有人喜欢把string类作参数输入到strcmp等C字符串函数里,肯定会出问题啊.
ch[0] =
您可能关注的文档
最近下载
- 湖北省武汉市八校2022-2023学年高二上学期期中联考物理试题(含答案解析).docx VIP
- 莲鹤方壶赏析整合版.docx
- 围墙计算表格.xls
- 65.突发事件救护疏散及避险逃生安全知识培训.pptx
- NBT35034-2014水电工程投资估算编制规定.pdf
- 感控知识应知应会.pptx VIP
- 通力电梯Monospace KDL16L系统安装调试说明.pdf
- 八年级地理上册 第二章 中国的自然环境 第三节河流 第1课时 以外流河为主教案 (新版)新人教版.docx
- (新教材)部编版语文一年级上册识字3《口耳目手足》PPT.pptx VIP
- 人教版一年级数学下册认识人民币跨学科主题学习作业设计案例欢乐购物街 .pdf
文档评论(0)