一.什么是类和对象?
面向对象的特点:封装、继承、多态
面向对象编程的特点:
易维护,质量高,效率高,易扩展
1.类和对象的概念
C++是一门面向对象的语言,理解C++,首先要理解类和对象
C++中的类可以看成C语言中的结构体升级版,结构体是一种构造类型,可以包含若干成员变量,成员变量的类型可以不同。
关于class(类)的几点说明:
(1)类的定义的最后有一个分号,他是类的一部分,表示类定义结束。
(2)一个类可以创建多个对象,每个对象都是一个变量
(3)类是一种构造类型,大小的计算方法和struct一样,需要字节对齐
(4)类成员变量的访问方法:通过 . 或者 ->来访问
(5)成员函数是类的一个成员,出现在类中,作用范围由类来决定,而普通函数是独立的,作用范围是全局或者某个命名空间
struct:内部默认是公有权限,结构体外部可以访问其内部成员
private:内部默认是私有权限,类的外部不能直接访问内部成员;可以手动声明为公有权限

2.类的访问
public:公有属性,凡是在它下面声明的变量和函数,都可以在类的内部和外部访问
private:私有属性,凡是在它下面声明的变量和函数,只能在类的内部访问
protected:保护属性,凡是在它下面声明的变量和函数,只能在类的内部以及派生类(子类)中访问

3.类中的元素
类中有成员变量,成员函数;
类可以创建对象;

二.对象的构造和析构函数
1.构造函数
在c++中,由一种特殊的成员函数,名字和类名相同,没有返回值,不需要用户显示调用(用户也不能调用),而是在创建对象的时候自动调用。 这种函数我们称为构造函数 关于构造函数:
1.函数名必须和类型相同
2.不能有返回值,函数体不能有return语句
3.构造函数在定义对象时会自动调用,不需要手动调用

2.构造函数的重载与调用
和普通函数一样,构造函数是允许重载的,一个类可以有多个重载的构造函数,在创建对象时根据传递实参来判断调用哪一个构造函数

3.拷贝构造函数
(1)概念
用一个现有的对象去初始化另一个对象
声明:Date(const Date& a);
(2)拷贝构造函数的调用时机
①.用一个对象初始化另一个对象
Date d1(d2);
Date d1=d2;
Date d1=Date(d2);
②.当函数的形参是一个对象时,例如:
void Print(Date d1)
{
d1.getday(2022,3);
}
③.函数的返回值是一个对象
Date& Func()
{
Date d1;
return d1;
}
4.深拷贝和浅拷贝
浅拷贝:只拷贝数据,内存空间并没有新开辟
深拷贝:数据和内存空间都要拷贝

5.默认构造函数
当使用者没有提供构造函数,系统会提供默认构造函数
当使用者提供了构造函数:
(1)提供了无参构造函数,编译器将不会在提供默认
(2)提供了有参构造函数,系统将不再提供无参构造函数

6.析构函数
创建对象时系统会调用构造函数进行初始化工作,同样,销毁对象时系统也会自动调用一个函数进行清理工作,如释放分配的内存,关闭打开的文件等,这个函数就是析构函数。
格式:~类名();
注意:析构函数没有参数,不能被重载,一个类只能有一个析构函数,如果用户没有定义析构函数,编译器会提供默认的析构函数

7.类名对象
类名();
代码执行完毕,立即释放(不用执行到return)。
8.构造函数的形参初始化列表
使用情形:
(1)类对象作为成员变量并且该类没有提供无参构造函数
(2)成员变量为const修饰

三.静态成员变量个静态成员函数
1.静态成员变量
(1)普通函数可以访问静态成员变量
(2)静态成员变量一定要在类的外部初始化
(3)静态成员变量可以直接通过类名来访问
2.静态成员函数
(1)静态成员函数只能访问静态成员变量,不能访问不同变量
(2)静态成员函数中的静态成员变量可以通过类名访问
(3)普通成员函数不能通过类名访问
四.友元函数
友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声 明,声明时需要加friend关键字。

本文介绍了C++中的类和对象的基本概念,包括类的定义、对象的创建,以及构造函数和析构函数的作用。同时,提到了类的访问控制(public,private,protected),构造函数的重载,拷贝构造函数的深拷贝和浅拷贝区别,以及静态成员变量和静态成员函数的特性。此外,还讨论了友元函数如何访问类的私有成员。
783

被折叠的 条评论
为什么被折叠?



