类与对象

本文深入探讨了C++的封装特性,解释了封装如何隐藏实现细节并使代码模块化,详细介绍了C++中的访问限制符public、protected和private,以及struct与class在默认访问权限上的区别。同时,文章还讲解了this指针的概念及其在类的成员函数中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • C++的三大特征:封装、继承、多态

封装:

 封装可以隐藏实现细节,使得代码模块化
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。
在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏

所有的 C++ 程序都有以下两个基本要素:

  • 程序语句(代码):这是程序中执行动作的部分,它们被称为函数。
  • 程序数据:数据是程序的信息,会受到程序函数的影响。

封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。

C++中提供了三个访问限制符public、protected、private

                            本类中           子类中         友元类 /友元函数         非子类/非友元类/非友元函数

public                     √                     √                     √                                        √   

protected               √                      √                     √                                        ×   

private                   √                      ×                     √                                        ×   

在class中如果没有声明变量或函数是哪种访问限制符,默认是private

区别struct :C++中,struct也当做类来处理,但struct中如果没有声明变量或函数是哪种访问限制符,默认是public

例:

#include<iostream>

class Circle{
   
	void show()
	{
		std::cout<<"Circle"<<std::endl;
	}
};

struct Node{
   
	void play()
	{
		std::cout<<"Node"<<std::endl;
	}
}; 

int main()
{
	Circle c;
	c.show();
	Node d;
	d.play();
	return 0;
}

编译:

 

  • this指针

   this指针是类的成员函数的一个隐藏参数,当对象调用成员函数时,this指针指向当前调用此函数的对象

this指向可以发生改变吗?

例:

class Circle{
public:
	Circle(double r=0)
	{
		this->r=r;
	}
	void show()
	{
		Circle r1;
		this=&r1;
		std::cout<<"Circle"<<std::endl;
	}
private:
	double r;
};


int main()
{
	Circle c;
	c.show();
	return 0;
}

编译:

Circle的构造函数(与类同名)可见在并没有传递this这个参数,我们在函数中就能调用this

show()函数可见this指针的指向不能发生改变,所以它的类型应该为:类名 *const this,说明this是一个常量,必须初始化

 

普通的成员方法依赖于对象调用,因为有this指针指向调用该成员函数的对象,完成this的初始化,否则不符合C++中常量的定义。

区别:static修饰的成员函数,C++中static修饰的成员函数称为静态成员函数,它没有this指针,所以可以不依赖对象调用,

调用:类名::函数名(形参列表)   或者 对象名.函数名(形参列表)  调用静态成员函数

 

类的成员函数在类内或者类外都能实现,

区别:在类内实现时默认是内联函数

          在类外实现是普通函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值