雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 50 下一页

2013年12月23日

摘要: 三门问题,其中有一扇门后面有一辆车,两扇门后面是山羊,你随意选择了一扇门,这时,主持人打开了某一扇门是山羊,问你换不换你刚才选的门。 大部分人应该跟我的想法是一样的,换不换有区别么?区别大了!网上找了下资料,这个解释是比较通俗易懂的。 如果让3000个人来选,那么第一次选的时候,按照概率,会有1000个人左右选中,是吧? 对于每个观众,主持人展示了一扇没有奖的门之后,说:“虽然给你去掉了一个错误答案,但是你没有反悔的机会。”这就相当于,每个人都选择了不换。于是最终,一开始选中的那1000人得到了奖。也就是说,如果不换的话,获奖概率为1/3。 也可以反过来:主持人展示了一扇没有奖的门... 阅读全文

posted @ 2013-12-23 18:42 huhuuu 阅读(276) 评论(0) 推荐(0) 编辑

2013年12月21日

摘要: 引入:这段时间一直在思考虚函数表的问题,同时也想知道虚函数表是在什么时候产生的本人是在VS2010的环境下,如有错误欢迎指出,谢谢。观察代码#include#includeclass A{public:A(); virtual~A(); void fun1(){ printf("123"); }};A::A(){ printf("new A\n");}A::~A(){ printf("Delete class A\n");}class B : public A{public:B(); ~B(); vo... 阅读全文

posted @ 2013-12-21 15:04 huhuuu 阅读(7218) 评论(0) 推荐(2) 编辑

摘要: 对于类中的成员变量的初始化要注意:考虑:#includeusing namespace std;class A{private: int n1; int n2; public: A():n2(0),n1(n2+2){} void Print(){ cout using namespace std;class A{private: int n1; int n2; public: //A():n2(0),n1(n2+2){} //n1:-858993458, n2: 0 //A():n1(n2+2),n2(0){}... 阅读全文

posted @ 2013-12-21 10:46 huhuuu 阅读(2169) 评论(0) 推荐(0) 编辑

2013年12月19日

摘要: 以前虽然考虑过这个问题,但是试了下以后就以为虚函数表在内存的代码区里,后来还被问到虚函数表在内存中的哪里,回答不同编译器对虚函数的处理是不一样的,今天仔细的测了测。 当然以下的测试是在win7的VS2010下。有错误欢迎批评指出,谢谢。 测试代码#include using namespace std;class Base1 {public: virtual void f() { cout << "Base1::f" << endl; } virtual void g() { cout << "Base1::g" &l 阅读全文

posted @ 2013-12-19 21:07 huhuuu 阅读(5450) 评论(0) 推荐(0) 编辑

2013年12月18日

摘要: 《c++ primer》中这样写的:引用在内部存放的是一个对象的地址,它是该对象的别名。对于不可寻址的值,如文字常量,以及不同类型的对象,编译器为了实现引用,必须生成一个临时对象,引用实际上是指向该对象,但用户不能访问它。#include#pragma pack(1)class data{public: double data_a; double &data_ra; data():data_ra(data_a){ //引用不能在构造函数体内初始化,要在构造函数名称右边初始化 data_a=1.0; }};int main(){ double... 阅读全文

posted @ 2013-12-18 22:53 huhuuu 阅读(268) 评论(0) 推荐(0) 编辑

2013年12月15日

摘要: 问题的引出:一个类D继承自两个类B1,B2,而B1,B2都继承与基类B#includeusing namespace std; class B{ public: int ib; char cb; public: B():ib(0),cb('B') { printf("B found\n"); } virtual void f() { cout ib=111;由于二义性 这样会有问题 //printf("%d\n",d->ib); d->B1::ib=222; //pri... 阅读全文

posted @ 2013-12-15 20:49 huhuuu 阅读(824) 评论(0) 推荐(0) 编辑

2013年12月10日

摘要: 引子:在算法运用迭代器的时候,很可能用到起相应型别(即迭代器所指之物的型别),但C++支持sizeof ,并无typeof。 可以利用function template的参数推导机制。1.函数参数的情况#includeusing namespace std;template void func_impl(I iter,T t){ T tmp;//这里解决了问题,T就是迭代器所指之物的类型 //…………}template void func(I iter){ func_impl(iter,*iter);}int main(){ int i; func(&i);}显... 阅读全文

posted @ 2013-12-10 14:13 huhuuu 阅读(449) 评论(0) 推荐(0) 编辑

2013年12月7日

摘要: 引出:写个类A,声明类A指针指向NULL,调用类A的方法会有什么后果,编译通过吗,运行会通过吗?(在VS2008与VC++的情况下) 有错误欢迎批评指正!#include#includeusing namespace std;class base{ int a;public: void fun(){ printf("base fun\n"); }};int main(){ base *b=NULL; b->fun();}看到这个的时候,一定以为运行会报错吧。但是奇迹般的,编译器输出了:base fun#include#includeusing nam... 阅读全文

posted @ 2013-12-07 19:15 huhuuu 阅读(1274) 评论(3) 推荐(0) 编辑

2013年12月5日

摘要: 我们往往在类中的函数体,重载操作中看到const T & 的影子,以前还是比较纳闷。 对于非内部数据类型的参数而言,象void Func(A a) 这样声明的函数注定效率比较底。因为函数体内将产生 A 类型的临时对象用于复制参数 a,而临时对象的构造、复制、析构过程都将消耗时间。 为了提高效率,可以将函数声明改为void Func(A &a),因为“引用传递”仅借用一下参数的别名而已,不需要产生临时对象。但是函数 void Func(A &a) 存在一个缺点:“引用传递”有可能改变参数 a,这是我们不期望的。解决这个问题很容易,加 const修饰即可,因此函数最终成为 阅读全文

posted @ 2013-12-05 22:45 huhuuu 阅读(540) 评论(0) 推荐(0) 编辑

摘要: #include#include#include#include#includeusing namespace std;class Base{private: int x; char *p;public: Base(void){ x=0; p=(char *)malloc(sizeof(10)); strcpy(p,"123456"); } void Set_x(int tx){ x=tx; } //函数名后面加const表示这个对象指针this所指之物是无法改变的 int Get_x()c... 阅读全文

posted @ 2013-12-05 22:30 huhuuu 阅读(6141) 评论(0) 推荐(0) 编辑

上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 50 下一页