您当前的位置: 首页 >  c++

风间琉璃•

暂无认证

  • 1浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

c++ 类和对象

风间琉璃• 发布时间:2022-10-08 19:57:02 ,浏览量:1

目录

一、类

1.类的定义

2.类的访问限定符

3.类的封装

4.this指针

二、类的默认成员函数

1.构造函数

2.析构函数

3.拷贝构造函数

三、类中的特殊成员

1.const修饰成员和对象

2.static静态成员

3.友元

4.内部类

 

一、类

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事拆分成不同的对象,通过对象之间的交互完成。 对象的共同特征由属性和功能组成,一般使用变量描述共同的属性,使用函数描述共同的功能。

1.类的定义

①使用结构体(struct)描述

C++对结构体的语法进行了扩展,结构体中不但可以有成员变量,也可以有成员函数。因此结构体可以用来描述对象的类型,在C++中,对象的类型叫类。

struct Test
{
	//成员变量
	int a;
	double b;
	//成员函数
	int Add(int x, int y)
	{
		return x + y;
	}
};

在创建一个变量时可以不需要struct关键字:

 Test  t;  //创建一个对象t

注意:C语言中结构体不可以有函数成员,但可以通过函数指针调用函数。

②使用类(class)描述对象的类型

class也可以用来描述对象的类型,语法和struct几乎一致 。

class className
{
	//类体:由成员变量和成员函数组成

};  //注意后面的分号

其中class为定义类的关键字,className为类的名字,{}中为类的主体,注意定义结束时加上后面的分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量,类中的函数称为类的方法或者成员函数。

用类类型创建对象的过程,称为类的实例化。,实例化出的对象将占用实际的物理空间来存储类成员变量。

注意:类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外使用成员,需要使用“::”作用域解析符指明成员属于哪个类域。 

定义和声明位置:

①声明和定义全部放在类体中。需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。

②声明放在头文件(.h)中,定义放在源文件(.cpp)中(推荐)。

类的前置声明:声明一个类名,类中的内容的具体实现实在之后的代码中定义。当类还未定义时需要使用该类类型就可以使用前置声明。

class 类名;  //前置声明

2.类的访问限定符

类中的成员具有访问属性,访问属性分为三类:

访问属性

public --- 公有属性

protected --- 保护属性

private --- 私有属性

特点

可以在类外和类内访问该成员

可以在类内部和子类中访问该成员

只能在类内部访问

  

struct中的成员的默认访问属性是公开的,class中的成员的默认访问属性是私有的。

C++中的struct和class的区别是什么? C++需要兼容C语言,所以C++中的struct可以当成结构体去使用。C++中的struct还可以用来定义类,和class定义类是一样的,区别是struct的成员默认访问权限是public,而class的成员默认访问权限是private。

在实际开发中,应该显示指定成员的访问属性:

class 类名{
public:
    公有成员;
protected:
    保护成员;
private:
    私有成员            
};

一个类中同个访问属性可以多次出现,通常把公开的成员写在类的最前面,私有成员写在类的最后 。一般来说,成员变量总是设置为私有属性,如果类外需要访问就提供公开的接口成员函数。

3.类的封装

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。

C++实现封装的方式:用类将对象的属性和方法结合在一块,让对象更加完善,通过访问权限,选择性的将其接口提供给外部的用户使用。 

class Time{
    //属性 ----- 成员变量
private://私有成员
    int hour;//时
    int min;//分
protected://保护成员
    int sec;//秒

public://公有成员
    //构造函数
    Time(int h=23,int m=59,int s=55):hour(h),min(m),sec(s)
    {
        cout            
关注
打赏
1665385461
查看更多评论
0.0380s