Effective C++条款05解读: 了解C++默默编写并调用哪些函数
来源:互联网 发布:java递归算法40例 编辑:程序博客网 时间:2024/05/29 13:40
C++编译器会在背后做许多事情, 这也是C++复杂的原因之一。 比如, 如果你写了一个空类:
#include <iostream>using namespace std;class Empty{};int main(){return 0;}
实际上就好像写了如下的程序一样:
#include <iostream>using namespace std;class Empty{public:Empty(){}Empty(const Empty &e){}Empty& operator=(const Empty &e){}~Empty(){}};int main(){return 0;}
当然, 当需要这些方法的时候, 编译器才会创建他们。 其实, 可以说, 我们几乎随时需要他们。
有时候, 如果你参加笔试面试, 有可能会考编译器创建的默认方法, 以上四个基本的方法, 是肯定需要回答出来的。
有时候, 面试官要你写一个类, 那么, 上述四个方法肯定是必须的, 下面, 我们给出一个简要的string类, 来给本文结尾:
#include <iostream>using namespace std;class TaogeString{private:char *m_p;public:TaogeString(char *p = NULL){if(NULL == p){m_p = new char[1];m_p[0] = '\0';}else{int len = strlen(p);m_p = new char[len + 1];strcpy(m_p, p);}}TaogeString(const TaogeString &a){int len = strlen(a.m_p);m_p = new char[len + 1];strcpy(m_p, a.m_p);}TaogeString& operator=(const TaogeString &a) {if(&a == this) // 处理自我赋值{return *this;}delete m_p;int len = strlen(a.m_p);m_p = new char[len + 1];strcpy(m_p, a.m_p);return *this;}~TaogeString(){delete []m_p;m_p = NULL;}void print(){cout << m_p << endl;}};int main(){TaogeString a("good");a.print();return 0;}
OK, 先说到这里。
0 0
- 《Effective C++》学习笔记条款05了解C++默默编写并调用哪些函数
- Effective C++:条款05:了解C++默默编写并调用哪些函数
- [Effective C++]条款05 了解C++默默编写并调用哪些函数
- 读书笔记《Effective C++》条款05:了解C++默默编写并调用哪些函数
- Effective C++条款05解读: 了解C++默默编写并调用哪些函数
- 【Effective C++】条款5:了解C++默默编写并调用哪些函数
- Effective C++——》条款5:了解C++默默编写并调用哪些函数 .
- [effictive c++]条款05 了解c++默默编写并调用哪些函数
- 《Effect C++》学习------条款05:了解C++默默编写并调用哪些函数
- Effective C++学习5 条款05:了解C++默默编写并调用了哪些函数
- Effective C++ 读书笔记 条款05:了解C++默默编写并调用哪些函数
- 《Effective C++读书笔记》--条款05:了解C++默默编写并调用哪些函数
- 条款05:了解C++默默编写并调用哪些函数
- 条款05:了解C++默默编写并调用哪些函数
- 条款05:了解C++默默编写并调用哪些函数
- 条款05 了解c++默默编写并调用哪些函数。。。
- 条款05:了解C++默默编写并调用哪些函数
- 条款05:了解C++默默编写并调用哪些函数
- 无限滑动的ViewPager
- JAVA语法细节(1)
- Python读写文件
- 【图像处理】数字图像处理软件(一)
- 智能指针
- Effective C++条款05解读: 了解C++默默编写并调用哪些函数
- LeetCode---(119)Pascal's Triangle II
- LeetCode 129 Sum Root to Leaf Numbers
- Mac配置Python开发环境并实现简单的字符串和整数拼接
- android源码之工厂设计模式
- Redhat/CentOS系统KVM虚拟机安装过程详解
- 最近
- 脚印
- BIOS和CMOS