有人可以解释几行吗?
1) char * Buffer; 我们在做什么呢?声明char类型的指针?为什么我们不初始化它?
2) MyString(const char * InitialInput) 所以这个构造函数(方法)接受一些字符串,基本上把它变成一个常量,并将它分配给一个地址?为什么常量和为什么指针?为什么我们不能只写 char InitialInput ?
3) const char * InitialInput 为什么这里有derefernce运算符和常量?据我了解这是一种方法?写 char GetString()?
有什么问题将其中一些更改为“我想要”的方式会导致已弃用从字符串常量转换为'char *'不确定这是什么意思...
#include <iostream>
#include <string.h>
using namespace std;
class MyString
{
private:
char* Buffer;
public:
// constructor
MyString(const char* InitialInput)
{
if(InitialInput != NULL)
{
Buffer = new char [strlen(InitialInput) + 1];
strcpy(Buffer, InitialInput);
}
else
Buffer = NULL;
}
// destructor
~MyString()
{
cout << "Invoking destructor, clearing up" << endl;
if (Buffer != NULL)
delete[] Buffer;
}
int GetLength()
{
return strlen(Buffer);
}
const char* GetString()
{
return Buffer;
}
};
int main()
{
MyString SayHello("I am saying hello to you!");
cout << "String buffer in MyString is " << SayHello.GetLength();
cout << " charecters long" << endl;
cout << "Buffer contains: " << SayHello.GetString() << endl;
}
答案 0 :(得分:0)
char*
通常用于指向char
s数组中的第一个元素,其中数组中的char
之一为\0
并表示一个字符串的结尾。我们将此类char*
称为 C风格的字符串。也就是说,此类型表示字符的字符串,而单个char
仅表示单个字符。
const char*
类似(仍然是C风格的字符串),但是我们不希望修改被指向的char
(我们只需要查看它们)
char* Buffer;
是MyString
课程的成员。是的,它没有被初始化,但它被分配给类的构造函数。这发生在会员的任何其他使用之前,所以它是安全的。
构造函数采用const char*
,因为它需要一串字符来填充Buffer
。 GetString
会返回const char*
,因为它会返回Buffer
中的字符串。