C++类和对象

1.类的定义

在C++中用类来描述对象,使用关键词class来定义类。

class Date//类名
{
public:
	//公有的
private:
	//私有的
protected:
	//保护的
};

2.访问限定符

访问限定符有public(共有的)、private(私有的)、protected(保护的),在类定义中没有指定访问限定符,默认为private。

public(共有的)成员变量或成员函数可以在类外面进行访问,private和protected都不可以在类外进行访问

3.面向对象三大特性:封装、继承、多态

封装:“高内聚,低耦合”,可以对一个对象进行封装处理,把它的一部分属性和功能对外界屏蔽,也就是说从外界是看不到的、甚至不可知的。

封装性指两方面含义:

(1)将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间互相独立,互不干扰;

(2)将对象中某些部分隐蔽其内部细节,只留下少量借口接口,以便与外界联系,接受外界的消息。

继承:体现类级别的复用。利用已有的数据类型,定义新的数据类型,所定义的数据类型不仅拥有新的成员还拥有旧的成员,这就叫做继承,被继承的旧的成员称为基类(父类),继承的新的成员称为派生类(子类)。

多态:通过一个接口,实现多种方法。

4.对象的大小计算

每个对象的大小为类中所有成员变量的大小之和,但需要遵循内存对齐(默认:VS——8字节对齐,gcc——4字节对齐)。

class Time
{
public:
	Time(int hour = 0 , int minute = 0, int second = 0)
		:_hour(hour)
		, _minute(minute)
		, _second(second)
	{}
private:
	int _hour;
	int _minute;
	int _second;
};
void test()
{
	Time t;
	cout << sizeof(t)<<endl;    //12
}

几个小问题:

(1)为什么计算对象大小时不加成员函数的大小?

因为成员函数存放在代码段,类实例化出多个对象时,其对应的成员变量不同,但是使用的是同一个成员函数,所以在计算对象的大小时只计算成员变量的大小,不加成员函数。

(2)一个空类的大小是多少?

一个字节,占用一个字节表示该类型的对象存在。

(3)一个类中只有成员函数,没有成员变量,该类的大小是多少?  一个字节。

(4)为什么要内存对齐?

内存对齐可以提高效率,以空间换时间。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值