C-C++
gu_gu_
这个作者很懒,什么都没留下…
展开
-
C++中int *a[] 和int (*a)[]的区别与原理
int *a[]int(*a)[]转载 2015-11-10 12:44:56 · 4393 阅读 · 0 评论 -
caffe源码解读
1:caffe.cpp关于typedef定义函数指针,其语法为:typedef <返回类型> (*<函数类型名>)(参数表)typedef <返回类型> (<类名>::*<函数类型名>)(参数表) 例如typedef void (*PF)(int x);void func1(int x){ cout<<"func1:"<<x<<endl;}void func2(int x){ cout<原创 2016-07-14 21:50:08 · 598 阅读 · 0 评论 -
C++ vector删除元素
当要删除迭代器中满足指定条件的元素时,如果运用不熟练经常容易出现错误,erase函数删除指定元素后返回的是指向删除元素的下一个元素的指针,如果不能应用好这一点,那么就会出现如下错误。 - 其中指示器在删除后就已经失效,再返回循环时(*i)也就变得没有意义,故而报错。正确方式是利用删除后期返回的指针。如下: 如果vector中存储的元素是指针,那么erase(原创 2016-08-17 10:21:16 · 1196 阅读 · 0 评论 -
google protobuf详解
瓷片博客讲解的非常明了非常感谢:http://www.cnblogs.com/stephen-liu74/archive/2013/01/04/2842533.html转载 2016-07-13 15:54:44 · 1192 阅读 · 0 评论 -
C++类的常量对象与常量成员函数
需要注意的是const对象由于不能修改对象的状态,const对象只能调用const成员函数,如const Person person(20); 只能调用参数列表后加const的成员函数,而普通对象可以调用任何的成员函数。此外const对象在声明时要进行初始化。这与const修饰的变量是一致的,如const int x = 100; 当类中定义了2个同名称的函数,其中一个用const修饰,另一个没有c原创 2015-11-20 11:22:39 · 916 阅读 · 0 评论 -
C++关联容器的一些细节
map中pair可以通过迭代器改变,但是pair中的key不能通过迭代器改变,因为其是const的。set的迭代器只能读set的值而不能改变其值,因为其也是const的。原创 2015-12-11 19:16:52 · 345 阅读 · 0 评论 -
C++容器的拷贝注意细节
为了创建一个容器为另一个容器的拷贝,两个容器的类型以及元素类型必须匹配。当传递参数为两个迭代参数用来拷贝时,就不需要容器类型是相同的了,而且严肃类型也不要求是相同的,只需要将考别的严肃转换为对应的元素类型即可。如图中实例:原创 2015-11-27 10:27:07 · 2384 阅读 · 0 评论 -
函数指针
定义指向函数的指针:此博客讲的很详细。为此做一个标记以备后面温习。 http://blog.csdn.net/dremi/article/details/1830174返回指向函数的指针 http://blog.csdn.net/zhuxiufenghust/article/details/6543652转载 2015-11-19 15:55:52 · 461 阅读 · 0 评论 -
C++指针的引用理解
指针可以作为参数传递直接修改所指的变量的值,如下代码:void change(int *p){ *p = 20; }int main(){ int a = 10 ; int * pa = &a; change(pa); cout<<"a = "<<a<<endl;//输出20 cout<<"*pa = "<<*pa<<endl;//输出20}原创 2015-11-24 19:23:51 · 396 阅读 · 0 评论 -
C++函数指针
定义指向函数的指针:此博客讲的很详细。为此做一个标记以备后面温习。 http://blog.csdn.net/dremi/article/details/1830174返回指向函数的指针 http://blog.csdn.net/zhuxiufenghust/article/details/6543652转载 2015-12-11 17:04:55 · 331 阅读 · 0 评论 -
const成员函数
从const成员函数返回* this,此时this指向的是一个const的指针,而* this则就是const对象,若另返回对象为一个const对象则就不能够进行一些需要修改的连串操作,如myScreen.display(count).set(‘*’);因为set需要改变内容,而display返回的是const对象不允许修改。一个const成员函数如果以引用的形式返回*this,那么他的返回类型将原创 2015-11-24 11:01:03 · 438 阅读 · 0 评论 -
C++学习中关于cout遇到的一个小问题
代码以及说明如下,看来基础知识还是非常重要的,才能故发现出现的问题的原因。int des;/*cout是右结合的,所以连写表达式先求右边的值,cout<<node->getInt(node,6,des)<<"des = "<<des<<endl; 故这种写法是错误的,因为他会先输出des,而des未初始化,故会报错。分开写后问题得到了解决。如下:*/ cout<<node->getInt原创 2015-11-24 11:05:06 · 582 阅读 · 0 评论 -
C++函数学习笔记
1.同前所学,内置类型在函数定义未初始化则会变成未定义变量,不可直接使用。而非内置类型(如string)则系统会自动初始化为空字符串。内置类型在函数外定义则系统会走动初始化为其默认值,可以不经过显示初始化直接使用。2.函数内定义的变量大多属于自动变量,函数体结束后变量也就随之销毁,若需要变量在函数结束后不销毁,可定义局部静态变量,此变量从第一次初始化知道程序结束才会被销毁,而非函数结束。 如下变量原创 2015-11-17 13:56:31 · 463 阅读 · 0 评论 -
二维数组细节
1.关于循环遍历问题:见primer P114for(auto &row:qq){ for(auto &col:row){ cout<<col<<endl;//输出二维数组的每一个元素 } } for(auto row:qq){ for(auto col:row){//错误,为了避免数组被自动转换为指针,这些元素原创 2015-11-16 13:27:22 · 420 阅读 · 0 评论 -
C++类的几个细节:友元和默认构造
如果类中包含内置类型或者复合类型(比如数组或者指针)的成员,则只有当这些成员全部被赋予了类内初始值才适合用默认构造函数,否则,他们的值将是未定义的,这个跟以前的在块内定义的内置类型和复合类型默认初始化会苍生未定义的情况相同。如下Person p = Person();cout<<p.age<<"年龄"<<endl; //age是int类型,属于内置类型,故输出后是未定义的有不确定的值原创 2015-11-21 10:29:46 · 583 阅读 · 0 评论 -
关于数据类型与指针的小笔记--初始化问题&&数组
1.再一次加强对int * a[] 和int (* a)[]的理解与温习,多次之后便能够理解指针的奥妙。2.看指针表达式时依据从右到左看或者从内到外依据运算符[]>*的优先级会很清晰。3.定义变量时,如果是内置类型如int等在函数外定义会自动初始化为0,在函数内(包括main函数)定义则不会初始化。如下代码:string s;int a;int _tmain(int argc, _TCHAR* a原创 2015-11-16 10:16:49 · 366 阅读 · 0 评论 -
C++ 虚函数
定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。原创 2016-09-07 20:37:34 · 376 阅读 · 0 评论