请帮我看看下面代码哪里出错了,谢谢哈!

#include<iostream>usingnamespacestd;classparent{inti;int*j;public:parent(inta=0,int*b... #include<iostream>
using namespace std;

class parent{
int i;
int* j;
public:
parent(int a=0,int* b=0){
i=a;
j=b;
cout<<i<<endl<<(*j)<<endl;
}
~parent(){
cout<<"i 的值为"<<endl;
cout<<"j的值为"<<endl;
}
};

void main(){
int n=7;
int* m;
*m=n;
parent a(3,m);
parent b=a;

}
展开
 我来答
百度网友8379ffa
2011-03-11 · 超过77用户采纳过TA的回答
知道小有建树答主
回答量:169
采纳率:100%
帮助的人:186万
展开全部
这个不对 *m=n;
估计你是想
m=&n;
m是个指针。
更多追问追答
追问
恩,是这个原因。但是编译时为什么不报错啊?
追答
*m= n表示m指针出值为n,但是你的m还没有初始值呢。
c 就是这样的。
logiciel
2011-03-11 · TA获得超过140个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:377万
展开全部
cout<<"i 的值为"<<i<<endl;//cout<<"i 的值为"<<endl;
cout<<"j的值为"<<j<<endl;//cout<<"j的值为"<<endl;

m=&n;//*m=n;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lucien001
2011-03-11 · TA获得超过485个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:41.1万
展开全部
我也是最近才自学c++的。。。姑且说上几点错误,顺便也能提高自身功夫。
1.先说错误:
经过我的debug,认为在这一行,(倒数第三行) ,*m=n;
这个赋值语句,本甚是没有错的,但是一般使用指针时,会对指针变量进行初始化赋值。
该语句没有对指针变量 m 赋初值,而直接进行间接引用,是一个编译错误。换句话说,指
针变量是 m,而不是 *m;必须显示的对 m 赋初值,否者,编译器不知道 m 所指向的地址,
如何能把 n 的值赋给 *m 间接引用的地址呢?
2.修改如下:
m = &n; //如此做,就对变量 m 赋初值了!
3.额外建议:
(1.)析构函数 ~parent() 中的cout 语句毫无意义,建议增加改成如下:
~parent()
{
cout << "i 的值为" << i << endl;
cout << "j的值为" << j<< endl;
}
(2.)为了以后便于修改,最好还是遵循一般程序员编写程序的惯例,养成好的习惯,比如,空格、空行,下面是我修改的:

//eg.001 (工程名) : eg.001.cpp (文件名)
//使用析构函数 (文件目的)
//(此外,还可以加上时间、地点等创作信息)

#include <iostream>
using namespace std;

class parent
{
int i;
int* j;
public:
parent(int a,int *b=0)
{
i = a;
j = b;
cout<<i<<endl<<(*j)<<endl;
}
~parent()
{
cout << "i 的值为" << i << endl;
cout << "j的值为" << j<< endl;
}
};

void main()
{
int n=7;
int *m ;
m = &n;
parent a(3,m);
parent b=a;

return;
}
追问
谢谢。呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式