上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页
摘要: 1、const意味着,这个变量只能被初始化一次,而且必须在定义的时候赋值。 2、初始化方式有两种。编译时初始化 和 运行时初始化。 如果const变量用作数组下标的话,必须在编译时初始化。这时候,在文件中类似define,直接替换。 3、默认情况下,const变量被设定为仅仅在文件内有效。多个文件中 阅读全文
posted @ 2018-01-07 14:35 newbird2017 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 第一种,析构没有写成虚函数,看看会怎样: 执行结果,在delete p的时候,只调用了A的析构函数。没有调用B的析构函数。 下面修改成虚函数,就正常了。 阅读全文
posted @ 2017-12-28 21:16 newbird2017 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 最开始的代码如注释中所示。 遇到的问题是,测试数据个数小于3的时候,会崩溃。 想了想原因,在于a.size()是一个无符号数,无符号的 1-3,会得到一个大的无符号数! bug由此产生。 阅读全文
posted @ 2017-12-21 20:45 newbird2017 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 1、默认构造函数 2、拷贝构造函数 3、虚 析构函数 阅读全文
posted @ 2017-12-20 22:30 newbird2017 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 看这个代码 通过这些代码,和调试工具,f10 f11来查看到底干了啥。 mark1: 构造函数。不用解释。 生成了a1 mark2: 发生了一次构造函数。h(a)会先拷贝构造一个临时变量,作为形参。 然后才进入h函数内部。生成的是a2 mark3: return这一句发生了两件事, 先发生了一次拷贝 阅读全文
posted @ 2017-12-20 22:13 newbird2017 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 父类中发生了重载。 子类中如果没有定义名字冲突的成员函数,这时候,父类中的两个函数都可以访问。 有冲突的时候,a只能直接访问自己定义的这个。 父类中的f必须通过a.parent::f这样的方式访问。这三个是并存的。 加了virtual以后呢? 阅读全文
posted @ 2017-12-20 18:17 newbird2017 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 两种代码方式: 执行结果如下,这是upcasting的例子。 person.f() 第二个例子:加上virtual 运行结果:woman.f() 这就是virtual的作用。 当使用指针或者引用的时候,不论指针或者引用的类型是父类还是子类,总是找到最精确的类型,去执行对应的成员函数。 阅读全文
posted @ 2017-12-20 12:48 newbird2017 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 不把b当B看了,而是把它当成一个A,只取它里面A属性的部分。 所以,pa->get_i()调用的实际上是A的get_i() pa->f()是一个非法调用。因为A里面没有f函数。 阅读全文
posted @ 2017-12-20 11:23 newbird2017 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 努力进名企?挣大钱? 努力到最后,进去一个天天996的公司? 什么时候是个尽头啊? 读博?出国? 阅读全文
posted @ 2017-12-19 21:07 newbird2017 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 成员函数: class a{ public: int size() const {return size;} private: int size; } const的实际含义是,this指针是const! 阅读全文
posted @ 2017-12-19 21:06 newbird2017 阅读(80) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页