smartarray.cpp

来自「Thinking_in_C___2.rar」· C++ 代码 · 共 44 行

CPP
44
字号
//: C03:SmartArray.cpp
// From Thinking in C++, 2nd Edition
// at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// An array which checks boundaries
#include <iostream>
#include <cstdlib> // For exit() declaration
using namespace std;

class Array {
  enum { size = 10 };
  int a[size];
  void check_index(const int index); // Private function
public:
  Array(const int initval = 0); // Default argument value
  void setval(const int index, const int value);
  int readval(const int index);
};
// Constructor (don't duplicate the default value!):
Array::Array(const int intval) {
  for (int i = 0; i < size; i++)
    setval(i, intval);  // Call another member function
}
void Array::check_index(const int index) {
  if(index < 0 || index >= size) { // Logical OR
    cerr << "Array error: setval index out of bounds" << endl;
    exit(1);  // Standard C library function; quits program
  }
}
void Array::setval(const int index, const int value) {
  check_index(index);
  a[index] = value;
}
int Array::readval(const int index) {
  check_index(index);
  return a[index];
}
int main() {
  Array A, B(47);
  // Out of bounds -- see what happens
  int x = B.readval(10); 
} ///:~

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?