#include "iostream.h"
class A
{
private:
int x;
public:
int y;
void AAA(int a,int b)
{
x=a;
y=b;
}
void print()
{
cout<<x<<y<<endl;
}
};
class B
{
private:
int c;
A Sample;
public:
int d;
void BBB(int c,int d)
{
Sample.AAA(c,d);
}
};
void main()
{
A AA;
B BB;
BB.BBB(10,20);
AA.print();
}
我想问一下,为什么我在调用完BBB()之后,再调用print()的话,x和y的数值就不见了,可我如果在AAA()中添加一个输出语句,查看x和y的值,发现一个是10,一个是20,也就是说赋值成功了,但为什么一最后输出时却是没有数值的呢?这个和析构有关吗?望各位多多指导~~~~~

解决方案 »

  1.   

    AA.printf()输出的是AA的x和y,但AA中的x和y根本没赋值,当然就不见了
      

  2.   

    你的对象BB和AA没有任何关系。
      

  3.   

    AA没有对他的成员x,y赋值,这样AA.printf()也就什么都没有了!!
    你的类的概念还没有建立,我建议你多看一看书了!!
      

  4.   

    在main中产生A类的AA对象,在BB里产生了A类的sample对象,这两个对象的x,y值没有任何关系。
      

  5.   

    你把B中的Sample改成public的, 然后
    BB.Sample.print();
    就明白了.
      

  6.   

    你的程序中的AA与BB一点关系都没有
    若按下面就发生关系了#include "iostream.h"
    class A
    {
    private:
    int x;
    public:
    int y;
    void AAA(int a,int b)
    {
    x=a;
    y=b;
    }
    void print()
    {
    cout<<x<<y<<endl;
    }
    };
    class B
    {
    private:
    int c;
    A Sample;
    public:
             B(A& AA)
             {  Sample=AA; }
    int d;
    void BBB(int c,int d)
    {
    Sample.AAA(c,d);
    }
    };
    void main()
    {
    A AA;
    B BB(AA);
    BB.BBB(10,20);
    AA.print();
    }
      

  7.   

    你看看你的主函数里边,AA你连用都没用啊,没赋值你怎么打印啊,你现在的AA和BB毫不相干啊.