2014年3月7日

while(cin>>a)的原理

摘要: >>运算符返回的是流对象的引用,那么题目就变成了 while(cin); 这好像有点奇怪,上网找了答案这是地址点击打开链接以下是复制过来的内容,不是本人原创:今天看书的时候看到代码while(cin>>val),忽然就在想这样写的合法性是如何判定的。我们都知道cin是一个流对象,而>>运算符返回左边的流对象,也就是说cin>>val返回cin,于是while(cin>>val)就变成了while(cin),问题就变成了一个流对象在判断语句中的合法性。 不管是while(cin)还是if(cin),都是合法的,为什么呢?我们自己定义一个 阅读全文

posted @ 2014-03-07 07:51 剑行earth 阅读(3726) 评论(0) 推荐(1) 编辑

2014年3月6日

关于相互依赖的类,如何不报错

摘要: 名词:--声明: class A; 只声明而不在此处定义,告诉编译器有这个类型,那么你就可以使用这个类型了,但这个类型的使用是受限的(在定义之前的使用)不完全类型:上面的类型就是不完全类型,该类型只能用来定义指向该类型的指针或则引用。在创建类的对象之前,必须完整地定义该类,同样在使用指针或者引用访问该类成员时,必须已经定义了类。#includeusing namespace std;class B;class A{public: A(){ m_a = 10;} void seta(B &b);//可以定义类的引用 ,但是不能在这里完整地定义该函数,因为B类只声明还没定义 i... 阅读全文

posted @ 2014-03-06 16:50 剑行earth 阅读(208) 评论(0) 推荐(0) 编辑

初始化列表和构造函数体内部的初始化是不同的

摘要: 今天在《C++prime》(真是一本好书啊,刚买来看,就学到了不少东西,果然学编程是幸福的,有那么多好书可以看)中看到了初始化列表和构造函数的不同之处。它们的不同之处在于--初始化列表是真正的初始化 ---相当于int a =10;而构造函数的函数体中的初始化(应该不能叫做初始化了)只是赋值而已 ---相当于 int a; a = 10;这些不同是可以在其他C++书中由理解得到,但是书中没有说,以至于自己也不知道是不是真的是这样。为了验证这个,下面做一个实验先说明一个东西,如果A是一个类,类中有拷贝构造函数,和重载了=号运算符那么 A a1; A a2 = a1;//初始化。调用拷贝构造函.. 阅读全文

posted @ 2014-03-06 16:49 剑行earth 阅读(362) 评论(0) 推荐(0) 编辑

2013年12月22日

const的注意点和用法

摘要: 注意:修饰变量的变量必须初始化const int i=1;//合法 const int j;//非法同样,定义一个指针常量同样要初始化int x;int *const p;//错误int *const q=&x;//正确,定义一个永远指向x的指针变量p与上面容易混淆的是int const *p;const int *p;//都一样,都是创建一个指向常量的指针变量(即不能通过该指针变量修改其指向的变量的值)但可以通过原变量名修改值,因为原变量不是一个常变量int x=1;int const *p;p=&x;*p=2;//不行x=3;//行用法:1.用const创建一个符号常量co 阅读全文

posted @ 2013-12-22 11:00 剑行earth 阅读(134) 评论(0) 推荐(0) 编辑

2013年12月20日

编贪吃蛇收获

摘要: ①函数的参数传递就是赋值要通过函数修改一个变量就要发送这个变量的地址如要修改指针变量所指向的内容就形参和实参必须是二级指针②为什么动态分配的变量能够跨函数使用 因为在a函数里动态分配的变量,在a函数结束之后, 不会自动被系统回收 所以只要有这个变量的地址就能够跨函数使用 阅读全文

posted @ 2013-12-20 15:35 剑行earth 阅读(142) 评论(0) 推荐(0) 编辑

导航