类与对象(二)

类与对象的定义与访问

面向对象的方法支持继承、多态机制

定义类和对象

类由成员构成:
数据成员——描述对象的属性
成员函数——描述对象的方法
介绍了几类不同的访问特性。
对象是类类型的变量,说明方法与普通变量相同。说明一个类类型的对象之后,编译器为每个对象的数据成员分配内存,对象没有成员函数的副本(相对于普通变量来说,分配的是内存,对于函数来说就是建立副本,他俩意思其实差不多,只不过是针对他俩另说),类成员函数可以被对象调用。
定义变量时要分配存储空间,同样,定义一个对象时要分配存储空间,一个对象所占的内存空间是类的数据成员所占的空间总和。局部变量在栈区(系统自动分配和释放内存),堆区是人为用malloc申请的,最后用free()函数释放,静态和全局的在静态区,类的成员函数存放在代码区
在这里插入图片描述

//类中定义成员函数内联函数处理

内联函数补充:
内联扩展是用来消除函数调用时的时间开销。
它通常用于频繁执行的函数,对于小内存空间的函数非常受益。
注意:
1.递归函数不能定义为内联函数

2.内联函数一般适合于不存在whileswitch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。

3.内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。

4.对内联函数不能进行异常的接口声明。

访问对象成员

格式
类外用 “ . ” 和 “ -> ” 运算符访问对象成员

1.用“.”访问的略
2.用“->”访问
class a
{
   
public:
	a();
	~a();
	int x, y;
	void print();
};
a::a()
{
   
	cout << "contructed" << endl;
}
a::~a()
{
   
	cout << "deleted" << endl;
}
void a::print()
{
   
	cout << x << endl << y << endl;
}
int main()
{
   
	a* b1 = new(a);
	b1->x = 3;
	b1->y = 4;
	b1->print();
	delete b1;
	return 0;
}

对象指针

class a
{
   
public:
	a();
	~a();
	int x, y;
	void print();
};
a::a()
{
   
	cout << "contructed" << endl;
}
a::~a()
{
   
	cout << "deleted" << endl;
}
void a::print()
{
   
	cout << x << endl << y << endl;
}
int main()
{
   
	a c1;
	a* c2;
	c2 = &c1;
	c2->x = 1;
	c2->y = 2;
	c2->print();
	//华丽丽的分界线
	a* b1 = new(a);
	b1->x = 3;
	b1->y = 4;
	b1->print();
	delete b1;
	return 0;
}

this指针

由于系统不会为每个类的对象建立成员函数副本的缘故,但是类的对象又得调用成员函数。因此,C++提供了一个称为this的隐含指针参数,方便知道在哪个对象上操作,在这个对象调用成员函数的时候,这个对象的地址就已经被传递给this指针。同时this指针不能显示说明,但可以显示使用。例如:
(*this).a=a或者this->a=a;用于形参和数据成员重名的时候用,当然也可以用作用域::来写,一些用成员函数重载运算符的时候也会用到。
上述加粗的地方解释为:
在这里插入图片描述

 void setXY ( int a, int b)
  {
    this-> a = a ;  this-> b = b ; }
  或者写成:
  class A
  {
   
   void setXY ( int a, int b)
  {
    A:: a = a ;  A::b = b ; }
  };

this指针是个常指针。(目前没遇到相关题目)

不能显示说明,可以显示使用。
你写的时候长这样:
 void setXY ( int a, int b) {
    x = a ;  y = b ; }
 实际上,在系统看来,是这样的:
 void setXY ( int a, int b, Simple * const this )
  {
    this
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如果树上有叶子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值