C++学习笔记|String|Cherno C++ Tutorials

本文介绍了C++中string对象作为函数参数时的行为,探讨了通过值传递和引用传递对字符串的影响。强调了操作符重载在string对象上的应用,展示了如何在不改变原始字符串的情况下进行操作。示例代码演示了函数参数为string对象时,使用引用以防止原始字符串被修改的细节。

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

string是一个类 它本质还是一个字符数组 

关于string的各种函数 内部实现 操作符重载 之后再补充

#include <iostream>
#include <string>

void PrintString1(std::string name){
    //相当于重新构造了一个新的对象并赋值 对这个对象对改变并不会影响到实参中的字符串
    name+="lallalal";
    std::cout<<name<<std::endl;
}
void PrintString2(std::string &name){//如果不希望改变原字符串的值可以加const
    name+="enenne";
    std::cout<<name<<std::endl;
}

int main(){
    const char*name="test";//在内存中 默认字符串后面有一个\0中止 这样才知道字符串在哪里结束
    char name2[6]={'a','b','c','d','e','\0'};//自己定义字符串数组的时候 要在最后加上\0 否则输出的时候会有问题
    std::string name3="name3";
    name3+="hahahah";//操作符重载?
    std::cout<<name2<<std::endl;
    std::cout<<name3<<std::endl;
    PrintString1(name3);//实际上name3没有被改变
    std::cout<<name3<<std::endl;
    PrintString2(name3);//name3改变了 因为函数参数是直接引用的
    std::cout<<name3<<std::endl;
}

 

将string作为函数参数 相当于创建了一个新的string对象并赋值 在被调函数中对该字符串的任何修改 its read only 并不会影响到main函数实参中的那个字符串 

这时候就可以用引用 如果不希望改变原字符串的值 可以用const 常量指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值