很多人因为一开始写了较多的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。
所以大家一定不要混用面向对象和面向过程的思想去编程。