2012年4月6日

C++ Primer Plus读书笔记06

摘要: 2012-03-041、重载运算符 例如Time类重载+ Time operator +(const Time input){ Time sum; sum.minute=input.minute+minute;;… return sum;}Time Sum(const Time &t){ …. return sum}两者功能一样,但左边是重载,可以实现Time a,b,c,d; a=b+c+d;这样的操作重载后的操作符至少有一个是用户定义的类型(本例为time型),且优先级不变。∴不可重载+表示(double-double) 不可重载的操作符:sizeof,逗号,作用域运算符::,见P 阅读全文

posted @ 2012-04-06 17:39 TheBest 阅读(112) 评论(0) 推荐(0) 编辑

C++ Primer Plus读书笔记04

摘要: 2012-02-251、char ch; cin>>ch; //一次一个字符,忽略空格 cin.get(ch); //不忽略2、 ctrl+z模拟EOF,读到文件为,则cin.eof()==cin.fail()==trueint count=0; char ch;cin.get(ch);while(cin.fail()==false){ cout<<ch; count++; cin.get(ch);}//可一行一行读入,输入ctrl+z结束3 cin.get(ch)返回cin对象,但istream类中提供了可将istream对象转换为bool值的函数, 当cin出现在i 阅读全文

posted @ 2012-04-06 17:38 TheBest 阅读(162) 评论(0) 推荐(0) 编辑

C++ Primer Plus读书笔记03

摘要: 2012-02-241、 结构体的默认访问权限是public,类是private∴ class myClass{void setValue(int value);} //不声明,则为private权限2、 类声明于myclass.h中,类实现于myclass.cpp中(include”myclass.h”)void myclass::setValue(int value){…}3、 快速string ,double转换#include<sstream>string doubleToString(double value){ostringstream ostr; ostr<&l 阅读全文

posted @ 2012-04-06 17:37 TheBest 阅读(152) 评论(0) 推荐(0) 编辑

C++ Primer Plus读书笔记02

摘要: 2012-02-221、 结构体中可以指定占特定位数的成员struct mytest{ int age:4 //用冒号分隔,则变量age占4字节 unsigned char a:4 //同上}2、 union共用体,当数据项使用多种格式(但不会同时使用时),比struct节省空间3、 new过程的3步 S1分配内存 S2调用所new对象的构造函数 S3返回对象的引用4、 int *p1,p2 //创建了一个指针和一个整型变量5、 几种指针分配策略int value=6; int *p_value; p_value=&value; //正确int a=5; int *p=&a; 阅读全文

posted @ 2012-04-06 17:36 TheBest 阅读(143) 评论(0) 推荐(0) 编辑

C++ Primer Plus读书笔记01

摘要: 2012-02-13new分配到堆上,栈上分自动变量(就是局部变量)new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数2012-02-191 sizeof 返回类型或者变量的长度,依赖于不同环境、编译器 对类型用sizeof,应该加括号,如sizeof(int) 对变量名,可以省略,如sizeof nMyAge;2#include<limits>包含INT_MAX,CHAR_BIT等定义3默认cout以十进制输出 int waist=0x42;//16进制 int 阅读全文

posted @ 2012-04-06 17:35 TheBest 阅读(248) 评论(0) 推荐(0) 编辑

2012年4月5日

Effective C++读书笔记04

摘要: 2012-03-301、绝不要重新定义继承而来的缺省参数值(对于virtual) class base { public :virtual void draw(color c=RED)const=0; } class derived public base { public :virtual void draw(color c=GREEN)const; } base *p=new derived; //p的静态类型为base*,动态类型为derived* 虚函数满足动态绑定,依据动态类型调用,∴p->draw(RED); //没有问题 但缺省参数是静态绑定,依据静态类型调用,∴p-> 阅读全文

posted @ 2012-04-05 13:14 TheBest 阅读(115) 评论(0) 推荐(0) 编辑

Effective C++读书笔记03

摘要: 2012-03-281、避免写一个成员函数,传回一个非const型指针或引用,并指向较低存取层的member Class B { private :A a; };//则a就是较低存取层的成员(即类成员变量,A类的成员变量a) 比如: Class B { public : A &func() {return a;} private: A a; };//若进行如下调用 B b=new B(); A &temp=b.fun(); 则可通过temp任意读写b.a,即b.a不再是private ,而是public 指针同上2、不要传回局部引用或以new获得的指针所指的对象 (1)传回引用 阅读全文

posted @ 2012-04-05 13:05 TheBest 阅读(121) 评论(0) 推荐(0) 编辑

2012年4月2日

Effective C++读书笔记02

摘要: 2012-03-271、在operator=中为所有成员赋值 例如,base中有private x,derived中有private y 则,derived & operator=(const derved& r) { if(this==&r) return *this; y=r.y; return *this;}//错,因为base成员中的x并未赋值,但由于x为base的private,在子类中无法赋值解决方案:在y=r.y之前加入base::operator=(r);//调用base的=重载若base中未写operator=,则会报错,如果是这种情况,更改为stat 阅读全文

posted @ 2012-04-02 21:52 TheBest 阅读(111) 评论(0) 推荐(0) 编辑

2012年3月29日

Effective C++读书笔记01

摘要: 2012-03-231、用const取代宏定义常量,用inline取代宏定义表达式#define不被视为语言的一部分,比如#defina A 30 则编译器不会识别A,A不会进入符号表,而是被预处理器移走了。当程序出问题时编译器不会报错A出错为了避免歧义,用inline取代define定义表达式2、在类中声明定义一个常量,比如SIZE,并在类中实现int a[SIZE]; 法一,用static const声明,如static onst int SIZE =5; 法二,使用枚举充当整数,如enum {SIZE=5}; 注意,当使用法一时,只是SIZE的声明,必须在程序文件中定义,如下 const 阅读全文

posted @ 2012-03-29 22:35 TheBest 阅读(120) 评论(0) 推荐(0) 编辑

2012年2月13日

由扔骰子看平均概率生成

摘要: 由扔骰子看平均概率生成昨天读到一个帖子,说如何通过扔骰子的方法得到7件事的平均概率情况(扔骰子只能得到6件事的均概率),其中一种解法为,扔两次,分别记为x,y,则定义计算式m=(x-1)*6+y,可得到m的范围为1-36,且m为均概率事件,则剩下要做的就很简单了,去掉36这一项,剩下的mod7即可。通俗点说若想得到7件事的均概率,则必须能够通过计算得到m件事的均概率且m>=7,(上题m=36),然后再进行取舍。因此,若想通过骰子得到4件事的均概率,则不需要定义新的计算式,因为掷骰子本身就是6件事的均概率(m=6且6>4),则对掷出的结果去掉5,6两项,剩下的mod4即可。还有一种通 阅读全文

posted @ 2012-02-13 13:01 TheBest 阅读(1957) 评论(0) 推荐(1) 编辑

导航