c++【基础(二)】

【1】空struct是0,而空类是1的原因

 

struct Data{
};
struct Data data(变量);
sizeof(Data)=0;
  • struct类型,在C语言中,是定义结构体。data只需要开辟内存就可以了

 

class/struct Data{
};
Data data(对象);
sizeof(Data)=1;
  • struct在c++中,也是定义类的。和class的区别是:class定义的类默认是私有的,而struct定义的默认是公有的

作为对象的data来说

  • 1.开辟内存
  • 2.调用合适的构造函数CGoods(CGoods *this)

构造函数:对象的初始化   
析构函数:释放对象占用的
外部资源

【2】指针和引用有什么区别

  • 定义指针时,不需要初始化              定义引用一定要初始化
  • 指针必须解引用                                引用变量是自动解引用的
  • 可以定义多级指针                             引用只能有一级
  • 引用比指针更安全

【3】在代码上如何解决浅拷贝问题

  • 1.提供自定义的拷贝构造函数和赋值重载函数
  • 2.拷贝构造函数和赋值重载函数声明成private的

【4】对象的拷贝构造函数,能不能按值接收?

  • 不能。从逻辑的角度来说,因为参数的传递本身就是拷贝。如果不使用引用类型,拷贝构造函数传递参数时又会调用拷贝构造函数,造成循环调用

【5】构造函数的初始化列表

  • 构造函数之前执行的,专门给当前对象的成员变量指定初始化方式的
  • 初始化列表中指定的初始化,其初始化顺序和定义的顺序有关,和他们在列表中出现的先后顺序无关

eg:

class CText{
public:	
	CText(int b=20):_b(b),_a(_b)// 如果按照这里初始化顺序,则结果为  20    20
	{}           //可是最后打印出来的a是随机值,b是20。说明是先初始化a,后初始化b
	void show()
	{
		cout << _a<<"======"<< _b << endl;
	}
private:
	int _a; 
	int _b;
};
int main()
{
	CText t;
	t.show();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简单的车位管理程序 随着家庭购买汽车的增加,停车场车位紧张的问题越来越突出。请根据题目要求完成简单的车位管理程序。 1.停车场有若干停车位(为说明问题,假定为3个),每个位置可以存放不同种类的的汽车,包括卡车Truck,客车Carriage和小轿车Car,但同一时刻一个位置只能存放0或1辆汽车。 2.管理系统模拟实际车辆停车的情况:新来车辆时如果有空位,按顺序为该车分配停车位; 车辆开走时,交纳相应停车费;统计各类车辆的数量。 3.定义描述停车场的类Park,其中有3个位置用于存放各类车辆。 4.定义基类Automobile,至少包括纯虚函数Pay用于显示车辆信息并交纳相应停车费。 5.定义派生类Truck,Carriage和Car,这些车辆除了拥有车牌号(字符串)、车辆已使用年数(整数)之外, Truck还拥有载重量(浮点数,单位吨)属性,Carriage还拥有乘坐人数(整数,单位人)属性,Car还拥有排气量(浮点数,单位L)属性。具体实现上述纯虚函数Pay,显示每类车辆的相应信息,并给出计价提示,其中Truck收费2元/小时,Carriage收费1.5元/小时,Car收费1元/小时。 6.重载输入“>>”操作符,使得可以通过cin直接读入每类车辆的相应信息。 7.编写main函数,测试上述所要求的各种功能,即根据菜单命令为新来车辆分配停车位、开走车辆(输入车位编号)时付费、显示停车场中各类车辆的数量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值