C++的问题,错在哪里,可以怎么改?

来源:百度知道 编辑:UC知道 时间:2024/05/25 05:21:05
#include<iostream.h>
class A
{public:
int c;
A(int n){c=n;};
};
class B
{int z;
public:
A *p=new A;
B(int a){A p(z);};};
void main()
{int k; cin>>k;
B b(k);cout<<b.p.c;
};
不好意思,本来要在问题补充里发程序的,不过百度要过一会儿才能确认问题,发不上去
有关在另一个类中初始化其他类对象的问题
可以在A中再定义一个构造函数,这样可以吗?
是否对p重复定义?

#include<iostream.h>
class A
{
public:
int c;
A(){}
A(int n){c=n;}
};

class B
{
int z;

public:
A p;
B(int a):z(a),p(a){}
};
void main()
{
int k;
cin>>k;
B b(k);
cout<<b.p.c;
};

是这样吗?

呵呵!建议你把题目也给写上吧!

首先我要说的是,输出来的i1为2,但i2并不是0;
我不知道你用的是什么编译系统,
是Turbo c,还是vc++6.0
但在不同的编译系统中结果会是不一样的。
在vc++6.0中,编译系统(32位的)会为整型数据分配4字节,其取值范围为-2147483648--2147483647.

而在你的程序,你先定义了两个float类型变量,再把它传给两个整型的变量,在这个过程中,编译系统会自动的进行类型转换,把单精度浮点型的小数部分去掉,而只留下整数部分,所以你的i1变成了2,但由于你的f2即便是舍掉小数也会超出整型的数值范围,当把它传给i2时,i2就会是一个很大但有不会超出整型范围的整数。
这就是为什么。
希望能够满意

自己刷分吗?
楼上那位什么都不看不见,你都能知道他问什么,难道你的木马已经到了他的电脑里了?