C++浅拷贝和深拷贝的区别
摘要:C++浅拷贝和深拷贝的区别 2012-04-24 21:22 11454人阅读 评论(6) 收藏 举报c++deleteclass编译器cc++默认的拷贝构造函数是浅拷贝浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如:class A { public: A(int _data) : data(_data){} A(){}private: int data; };int main() { A a(5), b = a; // 仅仅是数据成员之间的赋值 }这一句b = a;就是浅拷贝,执行完这.
阅读全文
posted @
2014-03-24 14:57
jeans chen
阅读(420)
推荐(0)
[EffectiveC++]item28:避免返回handles指向对象内部成分
摘要:可以先参考一个帖子:http://bbs.csdn.net/topics/390731394?page=1
阅读全文
posted @
2014-03-14 17:16
jeans chen
阅读(131)
推荐(0)
ZT 类模板的声明和实现是不能分离的
摘要:http://bbs.csdn.net/topics/380250382adlayadlay等级: #9 得分:0 回复于: 2012-03-31 11:19:35 引用6楼的回复:引用4楼的回复:通过显示实例化你可以把模版的实现放在cpp里,要不然的话模版实现必须放在.h里面.好像不显示实例化,我把模板放在main.cpp里面也没报错啊,比如你把刚才我那句注释掉,也可以运行的.你是只有一个cpp的情况.如果有多个cpp文件再使用这个模版,你必须把它放在头文件里,然后每个cpp都要#include这个头文件.显示实例化之后头文件里只需要声明,然后在其中一个cpp里面实现并显示实例化,其它的..
阅读全文
posted @
2014-02-24 14:47
jeans chen
阅读(460)
推荐(0)
[林锐13]面向对象程序设计方法概述
摘要:CHAPTER 13:面向对象程序设计方法概述13.5组合composition用于表示类的整体与部分关系。例如主机和显示器、鼠标等组合成计算机继承则表示类的“一般与特殊”的关系类的组合特性表现为两种:聚合(has-a) 和 关联(holds-a)聚合:比如head类有成员Eye,Nose,Mouth,Ear关联:就是类之间的引用,详细看第九章的关于结构的论述struct A{ int count; char *pName;//A holds-a string B *pb;//A holds-a B};struct B{ char ch; A *pa;//B holds-a A B *pNex
阅读全文
posted @
2013-11-18 17:17
jeans chen
阅读(188)
推荐(0)
[林锐8.4]函数指针
摘要:#include #include #include using namespace std;int main(){ double (*fp[2])(double) = {sqrt,fabs};//[]优先级大于* for(int i = 0;i < 2;i++) { cout << fp[i](9) << endl; } for(int i = 0;i < 2;i++) { cout << (*fp[i])(9) << endl;//[]优先级大于* } for(int i = 0;i < 2;i++) { ...
阅读全文
posted @
2013-11-18 17:04
jeans chen
阅读(232)
推荐(0)
ZT 自定义operator new与operator delete的使用(1)
摘要:http://blog.csdn.net/waken_ma/article/details/4004972先转两篇文章:拨开自定义operator new与operator delete的迷雾 C++允许用户通过自定义operator new和operator delete的方式来更改new与delete表达式的某些行为,这给了程序员定制内存管理方案的自由。但是享受这种自由的时候必须遵守一定的规范,具体可以参见《Effective C++ 2nd》的相关条款。本文补充解释一些特别容易引起误解的问题。 operator new和operator delete都有其正规形式(normal sign
阅读全文
posted @
2013-11-15 17:11
jeans chen
阅读(295)
推荐(0)
ZT C++关键字new学习
摘要:http://blog.csdn.net/waken_ma/article/details/4007914C++关键字new学习很多新手对C++关键字new可能不是很了解吧,今天我一起来学习一下。 “new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A{ int i;pu
阅读全文
posted @
2013-11-15 17:09
jeans chen
阅读(179)
推荐(0)
关于类的前向声明
摘要:关于类的前向声明(2012-01-09 11:08:09)转载▼标签:杂谈分类: 技术记录 前向声明的定义:有些时候我们可以声明一些类但是并不去定义它,当然这个类的作用也很有限了。比如class foo;声明一个foo类,这个声明,有时候也叫做前向声明(forward declaration),在声明完这个foo类之后,定义完这个foo类之前的时期,foo类是一个不完全的类型(incomplete type),也就是说foo类是一个类型,但是这个类型的一些性质(比如包含哪些成员,具有哪些操作)都不知道。因此这个类的作用也很有限.(1)不能定义foo类的对象。(2)可以用于定义指向这个类型的指针
阅读全文
posted @
2013-10-22 16:35
jeans chen
阅读(294)
推荐(0)
原文:I don’t want to see another “using namespace xxx;” in a header file ever again
摘要:http://stackoverflow.com/questions/5849457/using-namespace-in-c-headershttp://stackoverflow.com/questions/5849457/using-namespace-in-c-headers 這篇有解釋 避免在 header用 using namespace, 以免header被其他人include後 造成Conflictn all our c++ courses, all the teachers always put using namespace std; right after the ...
阅读全文
posted @
2013-10-22 16:10
jeans chen
阅读(292)
推荐(0)
ZT 头文件包含其实是一想很烦琐的工作 第一个原则应该是,如果可以不包含头文件
摘要:当出现访问类的函数或者需要确定类大小的时候,才需要用头文件(使用其类定义) http://blog.csdn.net/clever101/article/details/4751717看到这个警告,我想你一定悟到了什么。下面我说说我的结论:类的前置声明和包含头文件的区别在于类的前置声明是告诉编译器有这种类型,但是它没有告诉编译器这种类型的大小、成员函数和数据成员,而包含头文件则是完全告诉了编译器这种类型到底是怎样的(包括大小和成员)。这下我们也明白了为何前置声明只能使用指针来进行,因为指针大小在编译器是确定的。上面正因为前置声明不能提供析构函数信息,所以编译器提醒我们:“CSymbol”类型的
阅读全文
posted @
2013-10-22 15:16
jeans chen
阅读(349)
推荐(0)
[EffectiveC++]item31:将文件间的编译依存关系降至最低
摘要:P143:“声明的依赖性"替换“定义的依存性”
阅读全文
posted @
2013-10-22 11:24
jeans chen
阅读(144)
推荐(0)