C++类和对象详解

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

一.什么是类和对象?

面向对象的特点:封装、继承、多态

面向对象编程的特点:

易维护,质量高,效率高,易扩展

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关键字。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值