🎃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闫,期待你的关注!!!❤️