哪位高手帮我解释一下下面的问题(注释在程序后面了),谢谢。
include<iostream>//在vc6上用release模式编译(20章);usingnamespacestd;floatcomputer::total_pric...
include <iostream> //在vc6上用release模式编译(20章);
using namespace std;
float computer::total_price=0;
class computer
{
private:
char *name;
float price;
static float total_price;
public:
computer(const char*chr,const float p)
{
name=new char[strlen(chr)+1];
strcpy(name,chr);
price=p;
total_price+=p;
}
~computer()
{
delete [] name;
total_price-=price; //这句干什么用的,什么意思?
}
static void print_total()
{
cout<<"总价="<<total_price<<endl;
}
static void print(computer& com); //这句干什么用的,什么意思?
};
void computer::print(computer&com)
{
cout<<"名字="<<com.name<<endl;
cout<<"价格="<<com.price<<endl;
}
int main()
{
computer comp1("IBM",7000);
computer::print(com1);
computer::print_total();
computer comp2("ASUA",4999);
computer::print(com2);
computer::print_total();
comp2.computer(); //析构函数不是系统自带的吗,无需人工调用?
computer::print_total();
return 0;
}
名称=IBM
价格=7000
总价:7000
名称=ASUA
价格=4999
总价:11999 这个输出不理解?
总价:7000 这个的输出不理解? 展开
using namespace std;
float computer::total_price=0;
class computer
{
private:
char *name;
float price;
static float total_price;
public:
computer(const char*chr,const float p)
{
name=new char[strlen(chr)+1];
strcpy(name,chr);
price=p;
total_price+=p;
}
~computer()
{
delete [] name;
total_price-=price; //这句干什么用的,什么意思?
}
static void print_total()
{
cout<<"总价="<<total_price<<endl;
}
static void print(computer& com); //这句干什么用的,什么意思?
};
void computer::print(computer&com)
{
cout<<"名字="<<com.name<<endl;
cout<<"价格="<<com.price<<endl;
}
int main()
{
computer comp1("IBM",7000);
computer::print(com1);
computer::print_total();
computer comp2("ASUA",4999);
computer::print(com2);
computer::print_total();
comp2.computer(); //析构函数不是系统自带的吗,无需人工调用?
computer::print_total();
return 0;
}
名称=IBM
价格=7000
总价:7000
名称=ASUA
价格=4999
总价:11999 这个输出不理解?
总价:7000 这个的输出不理解? 展开
1个回答
展开全部
你这个程序编译都没通过就贴出来啊,有n多问题呢
1.float computer::total_price=0;写在了computer声明之前,编译器不认识的
2. computer comp1("IBM",7000);
computer::print(com1);com1和comp1不同
3. comp2.computer(); //析构函数不是系统自带的吗,无需人工调用?
这句话是错误的
解答你的问题:
static void print(computer& com); //这句干什么用的,什么意思?
是一个静态函数,传入一个computer参数,然后打印信息
你把正确的代码发上来吧,我会回答你的
1.float computer::total_price=0;写在了computer声明之前,编译器不认识的
2. computer comp1("IBM",7000);
computer::print(com1);com1和comp1不同
3. comp2.computer(); //析构函数不是系统自带的吗,无需人工调用?
这句话是错误的
解答你的问题:
static void print(computer& com); //这句干什么用的,什么意思?
是一个静态函数,传入一个computer参数,然后打印信息
你把正确的代码发上来吧,我会回答你的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询