C++头文件格式:
#include <[path]head[.h]>
#include "[drive:][path]head.h"
举例:(判断越界的数组)
arr.h
在当前“INCLUDES”目录下
#include <iostream>
using namespace std;
template <class arr_t>
class arr {
public:
explicit arr(int n) {
if (n <= 0) throw "arr::arr():Underflow!";
if (n >= 200000) throw "arr::arr():Overflow!";
this->len = n;
for (int i = 0;i < this->len;i ++)
this->a[i] = static_cast<arr_t>(0);
return;
}
arr_t *operator[](int i) {
if ((i < 0) || (i > (this->len - 1))) throw "arr::operator[]():Out of range!";
return &this->a[i];
}
private:
arr_t a[200000];
int len;
};
arr.cpp
#include <bits/stdc++.h>
#include ".\INCLUDES\arr.h"
using namespace std;
int main(int argc,char *argv[]) {
try {
arr<int> intarr1(-3);
}
catch (const char *e) {
cerr << e << endl;
}
try {
arr<int> intarr2(6666666);
}
catch (const char *e) {
cerr << e << endl;
}
try {
arr<int> intarr3(10);
*intarr3[-3] = -3;
cout << *intarr3[-3] << endl;
}
catch (const char *e) {
cerr << e << endl;
}
try {
arr<int> intarr4(10);
*intarr4[333] = 333;
cout << *intarr4[333] << endl;
}
catch (const char *e) {
cerr << e << endl;
}
try {
arr<void *> pointarr(4);
long longi = 1;
*pointarr[1] = &longi;
char chari1 = 'A';
*pointarr[2] = &chari1;
char chari2 = 'a';
*pointarr[3] = &chari2;
while (longi <= 26) {
cout << (*(reinterpret_cast<long *>(*pointarr[1]))) << ends;
for (int j = 2;j <= 3;j ++)
cout << (*(reinterpret_cast<char *>(*pointarr[j]))) << ends;
cout << endl;
++ longi;
++ chari1;
++ chari2;
}
string stringi = "Hello, World!\n";
*pointarr[0] = &stringi;
cout << (*(reinterpret_cast<string *>(*pointarr[0]))) << endl;
}
catch (const char *e) {
cerr << e << endl;
}
return 0;
}
望点赞