混写C和C++出现的问题

在从C语言转向C++编程时,如果继续使用面向过程的思路,可能会遇到一些问题。例如,混用string和char*会导致意料之外的结果。不理解string对象内部操作,将char*用于C++代码,会使程序出现错误。因此,避免混用面向对象和面向过程的编程思想以减少BUG的产生。

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

很多人因为一开始写了较多的C语言代码,然后在写C++代码时,用面向过程的思想去写,引发了很多的BUG

#include <iostream>
#include <cstring>

using namespace std;

int main(void)
{
    string s = "abc";
    const char* st = s.c_str();
    cout << st << endl;
    s.append("123");
    cout << st << endl;

    return 0;
}

你会发现该并不是像我们预想的一样,第一行输出 abc, 第二行输出 abc123。

为什么123没有被插入呢?

但是如果我们直接打印 字符串对象s 呢;

为什么直接打印字符串s 就对了呢。

原因很简答, 你一开始用string定义了一个对象,说明你要用的是C++代码来编写程序,那么你为什么又要用char* 呢?

char* 是C语言里面的概念,既然你已经用了C++的思想,那么你为什么不把char*定义成string。

因为string类里面的 char*  进行了什么操作你是不知道的。所以如果你会用面向对象和面向过程的编程思想去编程,那么你的程序绝对会出翔一堆BUG。

所以大家一定不要混用面向对象和面向过程的思想去编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值