设计一个空调类:aircondition; 数据成员包括:品牌(要求char* 类型)、颜色、等; 其中有复制构造函数(参数必须被const 修饰),赋值运算符重载函数

#include<iostream> 
#include<cstring>
using namespace std;
class aircondition
{public:
     char *brand;//char *定义的与其说是一种指针,不如说他是定义的一个变量;具体见底部
     string color;//颜色
     string power;
     string condition;
     double temperature;
     aircondition()=default;
     aircondition(const aircondition &p);
     aircondition(char *brand1,const string &color1,const string &power1,const string &condition1,double temperature1):brand(brand1),color(color1),power(power1),condition(condition1),temperature(temperature1){}
     aircondition& operator=(const aircondition &f);
     void condition1();
     void temprature2();
     ~aircondition();
     
     };
     aircondition::~aircondition()//析构函数 
     {cout<<"品牌:"<<brand<<endl; 
     cout<<"颜色:"<<color<<endl; 
     cout<<"状态:"<<condition<<endl; 
     cout<<"温度:"<<temperature<<"℃"<<endl;
     cout<<endl; 
     delete []brand;
     }
     
      aircondition& aircondition::operator=(const aircondition &f)//赋值函数 
     {color=f.color;
     condition=f.condition;
     temperature=f.temperature;
     power=f.power;
     brand=new char[strlen(f.brand)+1];
     strcpy(brand,f.brand);
     }
     
     void aircondition::temprature2()//变换温度 
     {cout<<"你想1、升温2、降温"<<endl;
     double c;
     cin>>c;
     if(c==1)
     {cout<<"升温到多少度"<<endl;
     double t;
     cin>>t;
     temperature=t;} 
     if(c==2)
     {cout<<"降温到多少度"<<endl;
     double t;
     cin>>t;
     temperature=t;
     }}
     
     void aircondition::condition1()//变换状态 
     {double t=2; 
     if(t==2)
     cout<<"空调已打开"<<endl; 
     condition="空调已打开"; 
     }
     
     aircondition::aircondition(const aircondition &p)//复制函数 
     {brand=new char(strlen(p.brand)+1); 
     strcpy(brand,p.brand);
     color=p.color;
     power=p.power;
     temperature=p.temperature;
     condition=p.condition;
     }
     
int main()
{aircondition p1("格力","贵族金","2匹","开",25);
p1.condition1();
p1.temprature2();
aircondition p2=p1;
aircondition p3;
p3=p2;
return 0;
}

注意char*:

1、char *n="123";

      cout<<n;//n输出123

总结:这里的n不是一个存放地址的指针,而是一个变量,一个拥有临时内存单元的变量,且它可以存放字符串;char*是一个整体(与string相似),而n单独是一个整体;切记:这里的*n不是一个整体

2、char*n="123";

     cout<<*n;//*n输出1

    总结:通过这个可以更加确定char*是一个整体,n单独是一个整体;如果误认为n是指针,然后将*n认为是一个整体去输出,这就会导致输出不完整,就比如这里只输出了一个1;(因为编译器误认为你这里是定义的一个char型的指针,而这里的char*你并不是想把他定义为指针并)

3、char *n;      等同于char *n[];

     cout<<*n;   等同于cout(n+0);

     cout<<n;     等同于cout n[];

4、

因为char *具有临时内存单元,所以一般单独给一个cha* 定义的变量赋值字符串时不用给他分配内存单元,但如果是多个char* 变量相互赋值则需要为他们分配内存单元(第一个char* 定义的变量不用),因为毕竟char*始终只是临时内存单元,还是很容易丢失的(可以用strlen()计算字符串长度,不包括/0)

5、

char *定义的变量不能直接用=进行赋值,必须用strcpy()进行复制;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值