【C++基础】构造函数、析构函数、string类

本文介绍了C++中的构造函数,包括默认构造函数、构造函数的重载和初始化列表,强调构造函数在对象初始化中的作用。接着讲解了析构函数,它是用于释放对象在构造时分配的资源,且不能重载。最后,文章讨论了C++标准库中的string类,作为常用的数据结构进行字符串操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、构造函数

1.首先我们知道一个常用的编码规范:声明变量赋初值。就是说我们在声明一个变量的时候,可以对它进行初始化,如果不对自己定义的变量进行初始化,一般编译器会指定一个随机值对它进行初始化,例如:

int i = 0;

int *p = NULL;

mallo 申请到的内存区域使用memset进行设置。

说白了,初始化就是给变量让它处于一个特定的状态、

同理,成员函数在进行定义的时候,也需要进行初始化,这就需要借助构造函数来进行实现

建立对象的时候,编译器会自动调用构造函数,如果需要指定,来完成对象的初始化

类对象的定义涉及到一个类名和一个对象名

由于类的唯一性和对象的多样性,用类名而不是对象名来作为构造函数名是比较合适的。

2.默认构造函数:就相当于是默认值。C++规定,每一个类都必须有一个构造函数,编译器会自动生成一个默认的构造函数

构造函数也是可以重载的,也是可以进行赋初始值,如果定义了构造函数,编译器也就不会在进行提供构造函数,和变量的定义是非常类似的,在用默认构造函数创建对象的时候,如果创建的是全局的对象或者是静态的对象,则对象的位模式全为0,否则,对象的值是随机的。

构造函数负责对象的初始化工作,将数据成员进行初始化。

创建对象的时候,其类的构造函数确保:在用户操作对象之前,系统保证初始化的进行。

(1)建立对象,必须有一个有意义的初始值。

(2)C++建立和初始化对象的过程专门由该类的构造函数来完成。

(3)构造函数给对象分配空间和初始化。

(4)如果一个类设有专门定义构造函数,那么C++就仅仅创建对象而不做任何的初始化。

3.构造方法满足以下的语法规则:

(1)构造方法与类名相同。

(2)没有返回类型

(3)方法实现主要为字段赋初值

(4)放在外部定义的构造函数,其函数名要加上“类名::”

构造函数的另一个特殊之处就是它没有返回类型,函数体中也不允许返回值,但是可以有无值返回语句“return ;”

因为构造函数专门用于创建对象和为其初始化,所以它是在定义对象时自动调用的。

如果建立一个对象数组:Desk  dd[5] ,则构造函数会被调用5次,都是调用的是默认的构造函数。

构造函数的初始化列表:

4.构造函数的初始化列表中数据的初始化顺序和声明的顺序相同

构造函数用于隐式类型转换

二、析构函数

一个类可能在构造函数里面分配资源(内存,打开的文件等等),这些资源需要在对象不复存在以前被释放。

析构函数也是特殊类型的成员,它没有返回类型,没有参数,不能随意调用,也没有重载,只是在类对象生命周期结束的时候,由系统自动调用。

析构函数名,就是在构造函数名前面加上取逻辑非的符号~,表示“逆构造函数”

如果类没有自定义析构函数,则编译器提供一个默认的析构函数

析构函数只有一个,不能重载

三、C++标准库里面提供的string类:

C++提供的抽象数据类型(ADT),用于进行字符串的操作,

字符串是软件系统中最常见的数据结构之一

中文的字符编码标准为GB18030,一般一个汉字占用的内存为两个字节,生僻字一般占四个字节。

字符串的初始化方法:
  初始化方法                  代码解释
string  s1;             默认的构造函数,s1为空的字符串
string  s2(s1);         将s2初始化为s1的一个副本
string  s3(“value”);    将s3初始化为字符串的一个副本
string  s4(n,’c’);      将字符串初始化为字符c的n个副本。
string的操作:
s.empty()               如果字符串为空,返回true,否则返回false
s.size()                返回字符串中字符的个数
s[n]                    返回字符串中的第n个字符,下标从0开始
s1+s2                   将s1和s2连接成一个新的字符串,返回新生成的字符串
s1=s2                   将s2赋值给s1
v1 == v2                比较v1和v2的内容,相等则返回true,否则返回false
!= , < ,<= ,> ,>=       保持这些操作符惯有的含义

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值