Effective C++ : delete和模板成员函数以及模板函数.
2016-04-11 00:00
218 查看
#include <iostream> #include <type_traits>
template<typename T> void processPointer(T* ptr) //假如我们不想让该模板函数接受char* 类型的指针这怎么办呢? { std::cout<<*ptr<<std::endl; }
template<> void processPointer<char>(char*)=delete; //OK,解决了问题.
template<typename T> class Node{ private: T key; public: template<typename Ty> Node(const Ty& key_); ~Node()=default; template<typename Ty, typename Judge = typename std::enable_if< std::is_integral<Ty>::value >::type > void setKey(Ty* k); };
template<typename T> template<typename Ty> Node<T>::Node(const Ty& key_) :key(key_) { // }
template<typename T> template<typename Ty, typename Judge> void Node<T>::setKey(Ty* k) { if(k != nullptr){ this->key = *k; } }
int main() { int n1 = 10; char c1 = 'c'; //processPointer(&c1); //error,因为我们已经删除掉了. processPointer(&n1); Node<int> node(10); int* p1 = new int(20); void* p2 = p1; node.setKey(p1); //node.setKey(p2); //error. node.changeKey(p1); delete p1; return 0; }
相关文章推荐
- C++实验3-个人所得税计算器
- C++作业3
- c语言条件运算符的结合性
- c++第三次作业
- c++实验3--个人所得税计算器
- c++作业3
- c++实验2--学生成绩
- C++作业3
- 指针数组和数组指针的区别
- leetcode----Best Time to Buy and Sell Stock
- C++第3次上机作业
- C++ 11 vlearning
- C++第3次上机实验--个人所得税计算器
- C++类的继承的基本认识
- c++string流之istringstream
- Java与c++异同 小结
- c++实验3--个人所得税计算器
- C++ Primer 第五版(中文版) ----容器与继承练习15.28 & 15.29
- 如何自己编写Arduino支持的C++类库
- 学生管理系统c++链表实现