C++类与对象

简介: C++类与对象

     🎃hello,大家好,今天让我带你给大家学习C++课程的第二章《类与对象》,好了,废话不多说,让我们开始今天的内容。


❄️面向对象程序设计思想:

       1.封装

       2.继承

       3.多态


❄️初始类和对象:

🔎类的定义:

       类是对象的的抽象,是一种自定义的数据类型。类的定义格式如下:

class 类名
{
权限控制符;
    成员;
};

       1)class是定义类的关键字。


       2)类名是类的标识符,其命名遵循标识符的命名规范。


       3)声明成员时,通常需要使用权限控制符限制成员的访问规则,包括public,protected,private,这三种权限控制符的权限依次递减。


       4)大括号后面的一个分号“:",用于类定义的结束。


🔎类的实现:

       类的实现格式如下:

返回值类型 类名::函数名称(参数列表)
{
    函数体
}


🔎对象的创建与使用:

       对象的定义格式如下:

类名 对象名;

         对象的成员变量和成员函数的访问可以通过”.“运算符实现,其格式如下:

对象名.成员变量
对象名.成员函数

❄️封装:

       C++的封装是通过类实现的,通过类把具体的事物抽象为一个属性和行为结合的独立单位,类的对象会表现出具体的属性和行为。


❄️this指针

       this指针是C++实现封装的一种机制,他将对象和对象调用的非静态成员函数联系到一起,从外部看,每一个对象都拥有自己的成员函数。


 ❄️构造函数:

       构造函数是类的特殊成员函数,用于初始化对象。

🔎自定义构造函数:

class 类名
{
权限控制符;
    构造函数名(参数列表)
    {
        函数体
    }
}

       1)构造函数名必须与类名相同。

       2)构造函数名的前面不需要设定返回值类型。

       3)构造函数无返回值,不能用return返回

       4)构造函数的成员权限控制符一般设置为public。


🔎重载构造函数:

       在C++中,构造函数允许重载。

🔎含有成员对象的类的构造函数:

       C++允许将一个对象作为另外一个类的成员函数,即类中的成员变量可以作为其他类的对象。

含有成员对象的类的定义格式如下:

class B
{
    A a;//对象a作为类B的成员变量
    ...//其他成员
}

如果类A构造函数有参数,其参数要从类B的构造函数中传入,必须以” : “运算符初始化类A的对象。

❄️析构函数:

       析构函数的定义如下:

class 类名
{
    ~析构函数名称();
    ...//其他成员
}

      1)析构函数的名称与类名相同,在析构函数的前面要加”~“符号。


       2)析构函数没有参数。因为没有参数,所以析构函数不能重载,一个类里面只有一个析构函数。


       3)析构函数没有返回值,不能在在析构函数前面加任何的返回值类型。


注意:析构函数的调用顺序与构造函数的调用顺序是相反的。在析构对象和构造对象时,C++遵循的是先构造的后析构,后构造的先析构。


❄️拷贝构造函数:

       拷贝构造函数的定义:

class 类名
{
public:
    构造函数名称(const 类名& 对象名)
    {
        函数体
    }
    ...//其他成员
}

浅拷贝:

为指针成员home分配空间,将形参home的内容复制到_home指向空间里。

int len = string(home)+1;
_home = new char[len];
memset(_home,0,len);
strcpy(_home,home);

深拷贝:

int len = strlen(another._home)+1;
_home=new cahr[len];
strcpy(_home,another._home);


❄️关键字修饰类的成员:

       🔎const修饰类的成员:

       在类中,const即可以修饰类的成员变量,也可以修饰类的成员函数。

       const修饰成员变量:

       使用const修饰的成员变量成为常成员变量。

       const修饰成员函数:

       使用const修饰的成员函数称为常成员函数。格式如下:

返回值类型 函数名() const;

       在常成员函数内部,只能访问类的成员变量,而不能修改类的成员变量;并且,常成员函数函数只能调用类的常成员函数,不能调用类的非成员函数。


❄️友元:


🔎友元函数:

普通函数作为友元函数:

class 类名
{
    friend 函数返回值 友元函数名(形参列表);
    ...//其他成员
}

其他类的成员函数作为友元函数:

class B;//声明类B
class A
{
 public:
    int func();
};
class B
{
    friend int A::func();
}


🔎友元类:

class B;
class A
{
};
class B
{
    frined class A;
}


提醒:

1)友元声明位置由程序设计者决定,且不受权限控制符的影响

2)友元关系是单向的。

3)友元关系不具有传递性。

4)友元关系不可继承。


       🎃以上是本期的所有内容了,请大佬多多在评论区指正!

       🌞我是IT闫,期待你的关注!!!❤️

相关文章
|
1月前
|
编译器 C++
C++之类与对象(完结撒花篇)(上)
C++之类与对象(完结撒花篇)(上)
35 0
|
7天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
34 4
|
8天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
31 4
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
1月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
23 4
|
1月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
21 1
|
1月前
|
存储 编译器 C语言
【C++打怪之路Lv3】-- 类和对象(上)
【C++打怪之路Lv3】-- 类和对象(上)
16 0
|
1月前
|
编译器 C++ 数据库管理
C++之类与对象(完结撒花篇)(下)
C++之类与对象(完结撒花篇)(下)
30 0
|
1月前
|
编译器 C++
C++之类与对象(3)(下)
C++之类与对象(3)(下)
32 0
|
1月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)