以下这个c++程序有什么问题吗?为什么在dev c++中编译不过?
#include<iostream>usingnamespacestd;classA{public:A(){x=newint;*x=5;}//创建一个对象的同时将成员指针...
#include<iostream>
using namespace std;
class A
{
public:
A(){x=new int;*x=5;}//创建一个对象的同时将成员指针变量保存在新空间中
~A(){delete x;x=NULL;}//析构对象的同时删除成员指针指向的内存空间,为了稳妥起见将 指针赋为空
A(const A &a)
{
cout<<"复制构造函数执行...\n"<<endl;
x=new int;//复制构造对象的同时将成员指针变量保存在新空间中
*x=*(a.x);//读取旧对象的成员指针变量x地址处的数据并赋给新对象的成员指针变量x所指向的内存区域
}
void print()const{cout<<*x<<endl;}
void set(int i){*x=i;}
private:
int *x;
};
int main()
{
A *a=new A();
cout<<"a:"<<a->print()<<endl;
A b=(*a);
a->set(32);
cout<<"b:"<<b.print()<<endl;
b.set(99);
cout<<"a:"<<a->print()<<endl;
delete a;
return 0;
}
vs里也不行 展开
using namespace std;
class A
{
public:
A(){x=new int;*x=5;}//创建一个对象的同时将成员指针变量保存在新空间中
~A(){delete x;x=NULL;}//析构对象的同时删除成员指针指向的内存空间,为了稳妥起见将 指针赋为空
A(const A &a)
{
cout<<"复制构造函数执行...\n"<<endl;
x=new int;//复制构造对象的同时将成员指针变量保存在新空间中
*x=*(a.x);//读取旧对象的成员指针变量x地址处的数据并赋给新对象的成员指针变量x所指向的内存区域
}
void print()const{cout<<*x<<endl;}
void set(int i){*x=i;}
private:
int *x;
};
int main()
{
A *a=new A();
cout<<"a:"<<a->print()<<endl;
A b=(*a);
a->set(32);
cout<<"b:"<<b.print()<<endl;
b.set(99);
cout<<"a:"<<a->print()<<endl;
delete a;
return 0;
}
vs里也不行 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励40(财富值+成长值)
3个回答
展开全部
程序中出问题的是
cout<<"a:"<<a->print()<<endl;
这种写法,有三处。问题在于,print函数没有返回值,cout的<<运算歼敬符不能或改碰作用于右边是void类型的对象上,所以编译不通过。
可以修改输出形式,如下:
cout << "a:";
a->print();
cout << 衫谈endl;
这样就不会出现问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的头文件有错误:修改如如棚下
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "malloc.h"\\此处有修改
typedef struct node
{
int data;
struct node *next;
}NODE;
main()
{
NODE *head=NULL,*q;
int i;
for(i=0;i<10;i++)
{
q=(NODE*)malloc(sizeof(NODE));
scanf("%d"运橘,&q->data);
q->next=head;//从表头插入节点
head=q;
}
printf("链表遍历\n");
q=head;
while(q!=NULL)
{if(q->渣悄则next!=NULL)
printf("%d->",q->data);
else
printf("%d",q->data);
q=q->next;
}
getch();//输入代码
}
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "malloc.h"\\此处有修改
typedef struct node
{
int data;
struct node *next;
}NODE;
main()
{
NODE *head=NULL,*q;
int i;
for(i=0;i<10;i++)
{
q=(NODE*)malloc(sizeof(NODE));
scanf("%d"运橘,&q->data);
q->next=head;//从表头插入节点
head=q;
}
printf("链表遍历\n");
q=head;
while(q!=NULL)
{if(q->渣悄则next!=NULL)
printf("%d->",q->data);
else
printf("%d",q->data);
q=q->next;
}
getch();//输入代码
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cout<<"a:"<<a->print()<洞基<endl;
//改成
cout<<悉颤哗"a:";
a->print();
cout <睁行<endl;
追问
coutprint()print();cout <<endl;能解释一下为什么要这么写吗?之前那么写为什么不行?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询