C++学习 DAY4

本文详细介绍了C++中析构函数的作用及用法,并深入探讨了String类的初始化方式和常用操作,包括字符串复制、连接等功能。

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

~符号用法

用于析构函数之前,与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往做“清理善后”的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。 
在C++中,析构函数必须与类名相同,只是在其前面加个~符号,析构函数不带任何参数也没有返回值(包括void型)。如果自己没有定义析构函数则系统会自动生成一个缺省的析构函数,它也不进行任何操作,因此一些简单的类中没有显示析构函数。

标准库String

头文件为#include<string>主要是字符串的相关类

初始化方式:

  • 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 将s1的内容替换为s2的内容
  • v1==v2 比较v1和v2的内容,相等则返回true,否则返回false
  • !=,<,<=,>,>= 保持这些操作符惯有的含义

    1 #include <iostream>
    2 #include <string>
    4 using namespace::std;
    5 
    6 
    7 int main()
    8 {
    9         string a("c++");
    10         string b(a);
    11         string c(4,'a');
    12         cout<<a<<endl;
    13         cout<<b<<endl;
    14         cout<<c<<endl;
    15 
    16         string d("c++");
    17         if(d.empty())
    18         {
    19                 cout<<"string d is empty"<<endl;
     20         }
     21         else{
     22 
     23                 cout<<"string d size is "<<d.size()<<endl;
     24         }
     25 
     26         string e = a+c;
     27         cout<<e<<endl;
     28         return 0;
     29 
     30 }
     输出结果:
    c++
    c++
    aaaa
    string d size is 3
    c++aaaa
    

对比C中字符串的一些操作函数

字符串复制函数:strcpy,memcpy(strcpy只能复制字符串,memcpy复制任意) 
对比两字符串是否相等:strcmp 
两字符串连接函数:strcat

Static类成员

静态类型成员是在类外进行分配空间和初始化的 
声明静态类型成员,则该类型成员被该类所共有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值