读书人

2级考级有关问题(最好一起回答)

发布时间: 2012-02-04 15:43:09 作者: rapoo

2级考级问题(最好一起回答)
1.char s[]= "9876 ",*p;
for (p=s;p <s+2;p++)
std::cout < <p < < " ";
还是不明白为什么不输出地址?

2.cout < <setfill( '* ') < <8; 里面的 < <8为什么会输出8?

3.class C{virtual void main(){};};
class C{void virtual func(){};};
第一个main函数可以定义成虚函数吗?第二个virtual可以跟void调换位置吗?

4.我在一段程序中看到virtual void fun()=0{cout < < "virtual fun=0 ";};
问题是纯虚函数不是应该没有函数体吗?

5.int a,*pa=&a; 为什么输出指针pa的十进制地址值的方法是cout < <long(pa)?

[解决办法]
1.对char*的输出就是定义为:从指定的地址开始依次输出字符,直到遇到 '\0 '.这样我们就能用一个地址表示一个字符串.
要输出地址,强制转一下指针类型到其他指针类型.
2.cout < <8不输出8,难道输出9.
3.类成员函数可以和一个全局函数重名,但建议不这么做.virtual位置调换,可不可以,用编译试一下就知道了.
4.纯虚函数也可以有函数体.
class CB{
public:
virtual void fun()=0{cout < < "virtual fun=0 " < <endl;}
};
class CD:public CB
{
public:
virtual void fun(){
CB::fun();//这样可以给派生类一个统一的默认实现
//其他代码
}
};
5.对非char*指针,不转也是可以的,但输出的是16进制数.

读书人网 >C++

热点推荐