C ++中几行的含义

时间:2014-12-31 10:50:16

标签: c++ pointers constants

有人可以解释几行吗?

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;
}

1 个答案:

答案 0 :(得分:0)

char*通常用于指向char s数组中的第一个元素,其中数组中的char之一为\0并表示一个字符串的结尾。我们将此类char*称为 C风格的字符串。也就是说,此类型表示字符的字符串,而单个char仅表示单个字符。

const char*类似(仍然是C风格的字符串),但是我们不希望修改被指向的char(我们只需要查看它们)

char* Buffer;MyString课程的成员。是的,它没有被初始化,但它被分配给类的构造函数。这发生在会员的任何其他使用之前,所以它是安全的。

构造函数采用const char*,因为它需要一串字符来填充BufferGetString会返回const char*,因为它会返回Buffer中的字符串。

相关问题