读书人

大家看这个程序输出是什么解决方法

发布时间: 2012-03-25 20:55:17 作者: rapoo

大家看这个程序输出是什么

#include <iostream>
using namespace std;

class s{
public:
s(){cout < < "s " < < endl; p = "hellow ";}
static char* p;
};


class v{
public:
v(){cout < < "v " < < endl;}
};

class A{

public:
const static int n = 9;
static char z[n];
static char* p2;
A() {cout < < "A() " < < sizeof(z) < < endl;}
v v1;
static s s1;
static v v2;
};


char A::z[n] = "sss ";
char* A::p2 = A::s1.p;
v A::v2;
s A::s1;
char* s::p = "world ";

class B{
public:
B(){
cout < < "B() " < < endl;
}
};

class C : public A, virtual public B{
public:
C(){
cout < < "C() " < < endl;
}
};


int main(){
cout < < A::p2 < < endl;

return 0;
}

[解决办法]
debug...
[解决办法]
程序有错?
[解决办法]
楼主,你把char *换成string就知道原因了。
你以为初始化是要执行语句的,其实错了。
对(以非0值进行初始化)内建数据类型,是没有初始化过程的,它们的初始值是在编译的时候,直接填入代码段,在运行的时候直接映射入内存的。

读书人网 >C++

热点推荐