More Effective C++笔记
不要对数组使用多态
数组根据数据类型读取到每个元素
删除数组
VC++中,没有数组new/delete函数
//vs2017
#include <iostream>
using namespace std;
class BST
{
public:
~BST()
{
cout << "destructor BST" << endl;
}
int m = 1;
};
class BalancedBST : public BST
{
public:
~BalancedBST()
{
cout << "destructor BalancedBST" << endl;
}
int n = 2;
};
ostream &operator<<(ostream &os, const BST &bst)
{
os << bst.m << ' ';
return os;
}
void printBSTArray(ostream &s, const BST array[], int num)
{
for (int i = 0; i < num; ++i)
{
s << array[i];
}
}
void testPrint()
{
BST BSTArray[5];
printBSTArray(cout, BSTArray, 5); //1 1 1 1 1
cout << endl;
BalancedBST bBST[5];
printBSTArray(cout, bBST, 5); //1 2 1 2 1
}
void deleteArray(ostream &logStream, BST array[])
{
logStream << "delete array at address " << static_cast<void *>(array) << '\n';
delete[] array;
}
void testDelete()
{
BST *bstArray = new BST[5];
deleteArray(cout, bstArray); //5次 destructor BST
cout << endl;
BalancedBST *balanceBstArray = new BalancedBST[5]; //5次 destructor BST
deleteArray(cout, balanceBstArray);
}
int main()
{
testPrint();
testDelete();
return 0;
}