c++ - 类成员函数执行时程序停止工作

标签 c++ arrays function class member

我知道类成员函数有问题,因为我将它们中的所有内容注释掉,程序将运行正常,但是当我取消注释任何内容时它停止工作。构造函数也运行良好。

这是我的 CharArray.h 文件:

#ifndef CHARARRAY_H
#define CHARARRAY_H

class CharArray
{
private:
    char * pArray;
    int iSize;

public:
    CharArray(int size)
    {
        char *pArray = nullptr;
        iSize = size;
        pArray = new char[iSize];
        pArray = '\0';
    }

    void setItem (int loc, char ch);
    char getItem (int loc);

    ~CharArray()
    {
        delete [] pArray;
    }
};

#endif // CHARARRAY_H

这是我的成员函数:

#include <iostream>
#include <cstring>
#include <iomanip>
#include <cstdio>
#include "CharArray.h"
using namespace std;

void CharArray::setItem (int loc, char ch)
{

    pArray[loc] = ch;

    cout << pArray[loc] << endl;

  return;
}

char CharArray::getItem (int loc)
{
  char c;

    c = pArray[loc];

  return c;
}

这是我的主文件:

#include <iostream>
#include <iomanip>
#include "CharArray.h"
using namespace std;

int main()
{
    CharArray myChar (5);
    int size;
    char cstr[10] = "Drew";

    myChar.setItem(1, 'A');

    char c = myChar.getItem(5);
    cout << c << endl;

return 0;
}

最佳答案

你的第一个问题是在构造函数中:

CharArray(int size)
{
    char *pArray = nullptr;   // <-- unrelated to the pArray in the object!
    iSize = size;
    pArray = new char[iSize];
    pArray = '\0';            // <-- we just lost the handle to new array
}

最后一行应该是:

    *pArray = '\0';

此外,最好使用更现代的构造函数样式,例如:

CharArray(int size)
     : pArray(new char[size]),
       iSize(size)
{
    *pArray = '\0';
}

关于c++ - 类成员函数执行时程序停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29689073/

相关文章:

c++ - 为什么 ios::app (append) 在 C++ 中不起作用?

c++ - STL Pass 迭代器与容器

c++ - 为线程创建模板

python 锯齿数组运算效率

javascript - 如何将字符串转换为javascript数组

c++ - 将成员函数传递给函数指针

javascript - ASP.Net Ajax 工具包客户端代码和 javascript 问题

function - 设计师为什么要在clojure里做vector、map、set函数?

python - 当参数在 Python 中指定为 None 时,让函数使用参数的默认值的好方法是什么?

c - 无法将二维 float 组分配给指针到指针到浮点