摘要:昨天写一个字符串逆置的程序,开始是这么写的:#include <iostream>using namespace std;char* ReverseWord(char* val);int main(){ char *str="hello"; cout<<ReverseWord(str); return 0;}char* ReverseWord(char* val){ char* right=val+strlen(val)-1; char* left=val; //r* right=val; //while(*right != '\0'
阅读全文
摘要:这是CSDN上一个我觉得对C++初学者了解虚函数一处很好的题目。#include <iostream>using namespace std;class CA{public: void f(){cout << "CA f()" << endl;} virtual void ff(){cout << "CA ff()" << endl;f();}};class CB : public CA{public : virtual void f(){cout << "CB f()&q
阅读全文
摘要:在Project Settings→ C/C++→ Category→ Listing Files→ Listing file type→Assembly with Source Code然后重新编译,即可在Debug目录下生成一个.asm文件,即汇编输出文件。参考:http://blog.csdn.net/sky1415/article/details/5173477
阅读全文
摘要:写下面程序来计算下我的电脑的运算速度:#include <stdio.h>#include <time.h>void Printlocaltime(void){ struct tm *timeptr; time_t secsnow; time(&secsnow); timeptr=localtime(&secsnow); printf("The date is %d-%d-20%02d\n", (timeptr->tm_mon)+1, (timeptr->tm_mday), (timeptr->tm_year)...
阅读全文
摘要:今天在CSDN看到一个帖子,让我想到的while(cin>>s)退出问题。程序如下:#include <iostream>#include <string>#include <vector>#include <algorithm>#include <functional>using namespace std;int main(){ vector<string> str; string s; while(cin>>s) str.push_back(s); for(vector<string&g
阅读全文
摘要:最近碰到了静态成员初始化问题,故在网上搜索了点资料,感觉这篇总结的蛮不错的,转来学习下。原文地址:http://patmusing.blog.163.com/blog/static/13583496020101814811570/有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.常量型成员变量b.引用型成员变量c.静态成员变量d.整型静态常量成员变量e.非整型静态常量成员变量对于常量型成员变量和引用型成员变量的初始化,必须通过构造函数初始化列表的方式进行。在构造函数体内给常量型成员变量和引用型成员变量赋值的方式是行不通的。静态
阅读全文
摘要:原文:http://blog.csdn.net/andylin02/article/details/3765326C++的iostream标准库介绍 0 、为什么需要iostream 1、 iostream: istream 和 ostream 2 、fstream: ifstream 和 ofstream 3、 strstream: ostrstream 和 istrstream 4、 stringstream 5、 io_state 输入/输出的状态标志0 为什么需要iostream 我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标
阅读全文
摘要:今天在CSDN论坛上看到一个帖子是关于C++的new的。CSDN原贴:http://topic.csdn.net/u/20120321/19/ed07dc5a-161e-4c3e-8f93-6f24f0f1db11.html?seed=233892078&r=77978834#r_77978834莫名想起多少年前我看过的收藏的一篇很经典关于C++的new的,现在整理下以资回顾。 原文如下(略做整理): 《C++的new》是写的很不错的一篇文章,对new讲的比较深入。只是对最后delete [] p这部分有些怀疑。因为所有的书上对简单类型的数组,也要求用delete [],而它说简单类型
阅读全文
摘要:这篇文章整理自CSDN论坛,希望面试不再重现这样的题目。经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++; 程序如下:#include <iostream>using namespace std; int main(){ int m = 1; int n = m+++m++; cout<<"n="<<n<<"\t"<<"m="<<m<<endl; return 0;}运行结果:n=2 m=3
阅读全文
摘要:首先看下面程序:#include <iostream>using namespace std;int main(){ int a[5]={0,1,2,3,4}; cout<<a<<endl; cout<<&a<<endl; cout<<a+1<<endl; cout<<&a+1<<endl; return 0;}运行结果:0012FF6C0012FF6C0012FF700012FF80解析:(1)a是数组名,代表数组第一个元素地址,a+1是数组第二个元素的地址。 (2)&
阅读全文
摘要:题:main主函数执行完毕后,是是否可能会再执行一段代码?给出说明。答:如果需要加入一段在main退出后执行的代码,可以使用atexit()函数注册一个函数,代码如下:#include <stdio.h>#include <stdlib.h>int atexit(void(*function)(void));void fn1(void),fn2(void),fn3(void),fn4(void);int main(){ atexit(fn1); atexit(fn2); atexit(fn3); atexit(fn4); printf("This is exe
阅读全文
摘要:原文:http://blog.csdn.net/liam1122/article/details/1966617 为了便于说明我们以String类为例: 首先定义String类,而并不实现其成员函数。 Class String{ public: String(const char *ch=NULL);//默认构造函数 String(const String &str);//拷贝构造函数 ~String(void); String &operator=(const String &str);//赋值函数 private: ...
阅读全文
摘要:这篇文章是CSDN C++论坛中多次讨论到的一个问题。先看下面程序:#include <iostream>using namespace std;#include <string>int main(){ int *p=new int[5]; //delete p; delete []p; p=NULL; //string *p=new string[5]; //delete p; //delete []p; //p=NULL; return 0;}对于int类型和string类型,delete p和delete []p编译器(vc6.0)会...
阅读全文
摘要:看看下面程序有什么错误:#include <iostream>using namespace std;class Father{public: Father(){}; ~Father(){};};class Son:public Father{public: Son(){}; ~Son(){};};int main(){ Father *pfather=new Son; delete pfather; pfather=NULL; return 0;}该程序在VC++6.0运行后并未发生错误,何解?修改上面程序如下:#include <iostre...
阅读全文
摘要:重载函数(1)定义:将一组功能非常相近的函数定义为重载函数。(2)一组重载函数是以参数类型或参数个数加以区别的,只有返回值不同不是一组重载函数,将会产生编译错误。(3)编译器调用重载函数的规#include <stdio.h>void ShowMessage(const char* Text,int Type);void ShowMessage(const char* Text,unsigned int Type);int main(){ unsigned char i=0; ShowMessage("hello",i); return 0;}void Show
阅读全文
摘要:Mutable(1)mutable的意思是“可变的,易变的”,跟C++中的const是反义词。(2)在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中实例说明:#include <iostream>using namespace std;class TestMutable{public: TestMutable(){i=0;} int Output() const { return i++; //error C2166: l-value specifies const ob...
阅读全文
摘要:explicit的中文解译是:详尽的;清楚的;明确的。那么explicit在C++中是什么意思呢?Explicit(显示的)(1)explicit可以禁止“单参数构造函数”被用于自动类型转换,有效的防止了构造函数的隐式转换带来的错误。(2)explicit只对构造函数起作用,用来抑制隐式转换。(3)所有的单参数的构造函数都必须是explicit的,以避免后台的类型转换。用实例说明上面两点:#include <iostream>using namespace std;class People{public: People(int age){} People(string name).
阅读全文
摘要:今天讨论下我在C++过程中遇到一个关于sizeof和strlen区别的问题。在Window编程中有如下一段程序:case WM_PAINT:{ HDC hDc; PAINTSTRUCT ps; hDc=BeginPaint(hwnd,&ps); //BeginPaint只能在WM_PAINT下使用 TextOut(hDc,0,0,"my program",strlen("my program")); EndPaint(hwnd,&ps); break;}在其中用到strlen("my program"),我想将strl
阅读全文
摘要:今天讨论下C/C++中的回调函数。在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来存取函数,把这种指向函数入口地址的指针称为函数指针。(2)先来看一个Hello World程序:int main(int argc,char* argv[]){ printf("Hello World!\n"); return 0;} 然后,采用函数调用的形式来
阅读全文
摘要:今天讨论下C/C++的几个觉问题。内联(inline)函数 提到内联函数,先看下面两个程序,程序的执行结界都是为了得到两个值相加之和://程序1int add(int x,int y){ return x+y;}int main(int argc,char* argv[]){ int a=1,b=2,c; c=add(a,b); //通过调用函数的形式得到相加结果 return 0;}//程序2int main(int argc,int argv[]){ int a=1,b=2,c; c=a+b; //直接计算...
阅读全文