C/C++
james1990
这个作者很懒,什么都没留下…
展开
-
深拷贝 和 浅拷贝
深拷贝和浅拷贝的定义可以简单理解成:如果一个类拥有资源(堆,或者是其它系统资源),当这个类的对象发生复制过程的时候,这个过程就可以叫做深拷贝,反之对象存在资源,但复制过程并未复制资源的情况视为浅拷贝 浅拷贝资源后在释放资源的时候会产生资源归属不清的情况导致程序运行出错。 #include using namespace std; class CA { public: CA(in原创 2014-03-28 20:18:52 · 462 阅读 · 0 评论 -
effective c++
1. 不要让构造函数和析构函数吐出异常, 这样可能会造成资源泄漏和不明确行为 2.构造函数和析构函数不要调用虚函数。 3.将基类析构函数定义为虚函数 ,这样动态析构时不会出错 4.将常用精简的函数设为inline,不要滥用,否则造成代码膨胀 5.使用template时也要考虑代码膨胀的问题 6.use const whenever possible 7.使用引用的好处:少了一个构造和析原创 2013-12-01 12:24:12 · 340 阅读 · 0 评论 -
const_cast所造成的同地址不同值问题
#include using namespace std; int main() { const int m = 9; int* p = const_cast(&m); *p = 2; cout << &m << " " << m << endl; cout << p << " " << *p << endl; return原创 2013-12-01 11:25:08 · 629 阅读 · 0 评论 -
一些C++语法
一、 C++ 中cast 意为强制类型转换 , const_cast 去除const特性; static_cast 类型静态转换 float f; static_cast(f); dynamic_cast 将指向基类的指针动态转换为指向派生类的指针 Base* p; Derive* pp = dynamic_ cast(p)原创 2013-12-01 11:16:10 · 395 阅读 · 0 评论 -
阻止copying行为
方法一: class Derive { private: Derive(const Derive&); Derive& operator=(const Derive&); //只声明,不定义 }; 方法二: class Uncopyable { protected: Uncopyable() {} //允许Derived对象构造和析构 ~Uncopy原创 2013-12-01 11:09:41 · 442 阅读 · 0 评论 -
copy_constructor, copy_assignment
#include using namespace std; class Base { public: Base() { cout << "Base constructor " << endl; } Base(const Base &b) { cout << "Base copy constructor " << end原创 2013-12-01 10:39:55 · 458 阅读 · 0 评论 -
C/C++中的字符串问题
#include using namespace std; int main() { char p[8]="abcdefg"; cout << *p << endl; //a cout << p << endl; //abcdefg cout << p[2] << endl; //c cout << &p[2] << endl; //cdefg原创 2011-11-19 22:23:27 · 257 阅读 · 0 评论 -
前++ 后++
int b = (++a) * (a++); 等价于 int b = (a++) * (++a); 可解释为 : ++a; int b = a * a; a++; int b = (++a) * (++a); 可解释为 ++a; ++a; int b = a * a; #inc原创 2014-03-21 21:42:00 · 442 阅读 · 0 评论