C++复习之类和对象、this指针

面向对象(OOP)语言的四大特征:
抽象,封装,继承,多态

C语言中:各种各样函数的定义
C++中:类,实体的抽象类型
在C++中,我们通过分析实体的属性和行为,得到它的ADT(abstract,data,type)。我们就可以把ADT输出成类。
类,可以根据其属性输出成成员变量,行为输出成成员方法。
这时候类依然是抽象类型,只有通过类去实例化出的对象,才代表了现实中的实体。
实例:通过一个类去描述一个商品。
商品的属性有:名称,单价,数量。
商品的行为有:

#include <iostream>
using namespace std;
const int NAME_LEN = 20;
class CGoods //对商品的抽象数据类型
{
public://给外部提供公有的成员方法,来访问私有的属性
	//做商品初始化用
	void init(const char *name,double price,int amount);
	//打印商品信息
	void show();
	//给成员变量提供一组getxxx或setxxx方法
	//类体内实现的方法,自动处理成内联函数
	void setName(char *name) { strcpy(_name,name); }
	void setPrice(double price) { _price = price; }
	void setAmount(int amount) { _amount = amount; }
	
	const char *getName() { return _name; }
	double getPrice() {return _price; }
	int getAmount() {return _amount; }
private://属性一般都是私有的成员变量
	char _name[NAME_LEN];
	double _price;
	int _amount;
};
void CGoods::init(const char *name,double price,int amount)
{
	strcpy(_name,name);
	_price = price;
	_amount = amount;
}
void CGoods::show()
{
	cout << "name:" << _name << endl;
	cout << "price:" << _price << endl;
	cout << "amount:" << _amount << endl;
}
int main()
{
	//CGoods可以定义无数的对象,每个对象都有自己的成员变量,但是他们共享一套成员方法
	//想了解对象内存大小的时候呢  对象的内存大小只和成员变量有关
	CGoods good;//类实例化的一个对象
	good.init("面包", 10.0, 200);
	good.show();
	good.setPrice(20.5);
	good.setAmount(100);
	good.show();

	CGoods good2;//类实例化另一个对象
	good2.init("空调",10000.0,50);
	good2.show();

	return 0;
}

类的成员方法一经编译,所有的方法参数,都会加一个this指针,接收调用该方法的对象的地址

void CGoods::init(const char *name,double price,int amount)
{
	strcpy(this->_name,name);
	this->_price = price;
	this->_amount = amount;
}
void CGoods::show()
{
	cout << "name:" << this->_name << endl;
	cout << "price:" << this->_price << endl;
	cout << "amount:" <<this-> _amount << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值