C/C++
文章平均质量分 54
daisylove
这个作者很懒,什么都没留下…
展开
-
拷贝构造函数探究
学习C++,对拷贝构造函数的理解是很有必要的,这涉及到很重要的效率问题。之前也看过很多遍,但总觉得理解仍然不是很透彻,于是又花时间梳理一遍,同时记下来方便以后查看。以具体例子来探究拷贝构造函数。有类A,函数f, g, h如下:class A{public: int num;public: A(int x = 0):num(x){ cout<<"调用构造函数!\n";} ~A(原创 2015-02-27 18:14:33 · 427 阅读 · 0 评论 -
extern const 探究
两个cpp文件如下: a.cpp: const int x = 1;b.cpp: #includeusing namespace std;extern const int x;int main(){ cout<<x<<endl; return 0;}编译两个cpp文件,会出现链接错误:x无法解析。 出错原因是C++规定const声明的常量为局部量,原创 2015-02-27 16:24:31 · 444 阅读 · 0 评论 -
memset & memcpy
看STL源码时不明白为什么对字符串类型的构造函数、拷贝构造函数单独用memset、memcpy实现。现在才恍然大悟。这两函数是按字节来操作的,举个栗子#include #include #include using namespace std;int main(){ int a[5]; memset(a,1,20); for(int i=0;i<5;i++)原创 2015-03-27 21:00:58 · 419 阅读 · 0 评论 -
C++11中的右值引用及move语义编程
C++0x中加入了右值引用,和move函数。右值引用出现之前我们只能用const引用来关联临时对象(右值)(造孽的VS可以用非const引用关联临时对象,请忽略VS),所以我们不能修临时对象的内容,右值引用的出现就让我们可以取得临时对象的控制权,终于可以修改临时对象了!而且书上说配合move函数,可以大大提高现有C++的效率。那么是怎样提高它的效率的呢?看段代码先!#include转载 2015-03-28 15:49:30 · 464 阅读 · 0 评论 -
C++ bind详解
bind是一组用于函数绑定的模板。在对某个函数进行绑定时,可以指定部分参数或全部参数,也可以不指定任何参数,还可以调整各个参数间的顺序。对于未指定的参数,可以使用占位符_1、_2、_3来表示。-1表示绑定后的函数的第1个参数,_2表示绑定后的函数的第2个参数,其他依次类推。 bind可以绑定到普通函数、函数对象、类的成员函数和类的成员变量。下面分别进行介绍。 1、普通函转载 2015-04-01 21:33:24 · 6558 阅读 · 0 评论 -
C++之局部static变量
static其他特性不多说,就说一点,当变量为局部static变量时,如果不知道它的特性你会欲哭无泪。今天在debug项目时就发现了这个坑。直接看两个例子吧。#includeusing namespace std;int cnt=1;void f(){ static int test = cnt; cout<<test<<endl; cnt++;}int main(){原创 2015-04-15 14:01:05 · 3078 阅读 · 1 评论 -
C++之多重继承
C++多重继承是很大一块,也不多说,就说一两点。首先探究下多重继承下派生类的内部是怎么布局的。且看下面一个例子例1:#includeusing namespace std;class A{public: int x;public: A(){ cout<<"调用A构造函数!\n";} A(const A& a){ cout<<"调用拷贝构造函数!\n";} void te原创 2015-04-15 19:19:28 · 554 阅读 · 0 评论