??xml version="1.0" encoding="utf-8" standalone="yes"?>#include < cstdlib >
#include < iostream >
#include < typeinfo >
using namespace std;
class B
{
public :
virtual void fun()
{}
};
class D: public B
{
public :
void fun()
{}
};
int main()
{
B * p;
D ob;
p =& ob;
cout << " typeid(*p).name()= " << typeid( * p).name() << endl;
if (typeid( * p) == typeid(D))
cout << " typeid(*p)==typeid(D) " << endl;
cout << " typeid(p).name()= " << typeid(p).name() << endl;
if (typeid(p) == typeid(B * ))
cout << " typeid(p)==typeid(B*) " << endl;
system( " pause " );
return 0 ;
}
q段code在VC++6.0中编译时Q提C如?br>warning C4541: 'typeid' used on polymorphic type 'class B' with /GR-; unpredictable behavior may result
~译后运行时错误。不知是不是此版本的VC++不符合C++标准Q?br>
在DevcppQg++Q中~译q行得到的结果是
typeid(*p).name()=1D
typeid(*p)==typeid(D)
typeid(p).name()=P1B
typeid(p)==typeid(B*)
说明用typeid作用?p得到的的是DcdQ而用typeid作用于p得到的依然是Bcȝ指针cd
如果typeid被作用于非多态类指针Q那么我们得到的是指针被声明的类型,也就是说Q此时typeidq不会返回指针所指向对象的实际类型?br>如果class B中的virtualLQ在~译q行得到的结果是
typeid(*p).name()=1B
typeid(p).name()=P1B
typeid(p)==typeid(B*)
由此可见Q在M时刻都可以用基类指针指向zcd象,而用typeid(*p)定p指向的对象时Q只当基cMؓ多态类时才能真正确定p在运行时指向的实际类型?br>
VC默认不启动RTTIQ即“q行时期cd识别”Q如果在你的E序用到了RTTIQ比如typeidQ你必须明确告诉~译器启动RTTIQ这样VC才能正确~译
选择菜单Project->settings->c/c++->category->c++ language,Enable Run-Time Type Infomation(RTTI)选中
]]>
2 #include <iostream>
3 #include <fstream>
4
5 int main(int argc, char* argv[])
6 {
7 using namespace std;
8
9 cout << "Hello, Let's begin a test of cout to file." << endl;
10 // 保存cout缓冲区指针
11 streambuf* coutBuf = cout.rdbuf();
12
13 ofstream of("out.txt");
14 // 获取文gout.txt缓冲区指针
15 streambuf* fileBuf = of.rdbuf();
16
17 // 讄cout缓冲区指针为out.txt的流~冲区指?/span>
18 cout.rdbuf(fileBuf);
19 cout << "Name " << "Chen" << endl;
20 cout << "Sex " << "Female" << endl;
21 cout << "E-mail"<< "Chen@qq.com" << endl;
22
23 of.flush();
24 of.close();
25
26 // 恢复cout原来的流~冲区指?/span>
27 cout.rdbuf(coutBuf);
28 cout << "Write Personal Information over..." << endl;
29
30 system("PAUSE");
31 return 0;
32 }
]]>
O(n)法。因Z个数l都是排好序的。所以只要一ơ遍历就行了。首先设两个下标Q分别初始化Z个数l的起始地址Q依ơ向前推q?。推q的规则是比较两?数组中的数字Q小的那个数l的下标向前推进一步,直到M一个数l的下标到达数组末尾Ӟ如果q时q没到相同的数字,说明数组中没有相同的数字?br>
bool findcommon(int a[], int size1, int b[], int size2)
{
int i=0,j=0;
while(i<size1 && j<size2)
{
if(a[i]==b[j])
return true;
if(a[i]>b[j])
j++;
if(a[i]<b[j])
i++;
}
return false;
}
]]>
http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html
]]>
class A
{};
class B
{};
class C //情况1
//class C:public A //情况2
{
virtual void fun()=0;
};
class D:public B,public C
{
};
int main()
{
cout<<sizeof(D)<<endl;
return 0;
}
最q在目中遇C一个奇怪的问题?/p>
在程序中QA模块用到了一个模版函敎ͼq个模版函数外部不需要调用,因此?.cpp中定义ƈ实现之?/p>
~译的时候奇怪的现象发生了(VC6 sp5Q,在debug下,一切正常;在release下,在写q个模块的h那里可以正常~译且运行正常。可拿到我这来的时候,q译不q了。我们几个师兄弟都没辙了Q只能等老板来解决了?/p>
“template必须定义于头文g中!”老板如是告诉我们?/p>
试之Q果不其Ӟ
今日又看《C++标准E序库》,在p10|?Q有记蝲Q?#8220;目前template必须定义于头文g?...."?/p>
在程序中获得普通文Ӟ目录Q管道,socketQ字W,块(Q的属性?/p>
函数原型
#include <sys/stat.h>
int stat(const char *restrict pathname, struct stat *restrict buf);
提供文g名字Q获取文件对应属性。把相应的属性存攑ֈ buf中?/p>
2 文g对应的属?br>struct stat {
mode_t st_mode; //文g对应的模式,文gQ目录等
ino_t st_ino; //inode节点?br> dev_t st_dev; //讑֤L
dev_t st_rdev; //Ҏ讑֤L
nlink_t st_nlink; //文g的连接数
uid_t st_uid; //文g所有?br> gid_t st_gid; //文g所有者对应的l?br> off_t st_size; //普通文Ӟ对应的文件字节数
time_t st_atime; //文g最后被讉K的时?br> time_t st_mtime; //文g内容最后被修改的时?br> time_t st_ctime; //文g状态改变时?br> blksize_t st_blksize; //文g内容对应的块大小
blkcnt_t st_blocks; //文g内容对应的块数量
};
可以通过上面提供的函敎ͼq回一个结构体Q保存着文g的信息?/p>
本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/fxpbupt/archive/2008/11/17/3313427.aspx