Effective C++条款05解读: 了解C++默默编写并调用哪些函数
2015-06-16 22:55
645 查看
C++编译器会在背后做许多事情, 这也是C++复杂的原因之一。 比如, 如果你写了一个空类:
实际上就好像写了如下的程序一样:
当然, 当需要这些方法的时候, 编译器才会创建他们。 其实, 可以说, 我们几乎随时需要他们。
有时候, 如果你参加笔试面试, 有可能会考编译器创建的默认方法, 以上四个基本的方法, 是肯定需要回答出来的。
有时候, 面试官要你写一个类, 那么, 上述四个方法肯定是必须的, 下面, 我们给出一个简要的string类, 来给本文结尾:
OK, 先说到这里。
#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, 先说到这里。
相关文章推荐
- 求众数(c语言)
- C语言-判断闰年
- C++中static、const、static const修饰变量作用详解(转)
- PCA人脸识别学习及C语言实现
- [C/CPP系列知识] Type difference of character literals 和 bool in C and C++
- C++中重载/覆盖/隐藏的区别
- C语言笔记之指针的初步认识
- C++下高效率int转成string
- 开始学习C++心得实例(4)
- c++异常处理机制
- 【leetcode c++】19 removeNthFromEnd
- c++容器之vector
- [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++
- C++ Virtual介绍
- C++ Virtual介绍 分类: C/C++ 2015-06-16 21:36 26人阅读 评论(0) 收藏
- FreeGLUT Tips: Resolve compile error C2664: cannot convert argument 2 from '_TCHAR *[]' to 'char **'
- C语言和Fortran语言的差异
- 迷宫的最短路径 代码(C++)
- 一起talk C栗子吧(第十八回:C语言实例--输出十六进制)
- C++标准库之Unities-笔记2