摘要: 概念:在有些大型类中复制一个类要花费大量时间。 如 TString one("abcd"); TString two(one); 这时写时复制就可以解决这个问题,所有复制对象共用原对象,当要改变对象的数据成员时才产生一个新的副本。 .head .cpp; 思考:在上面的代码中,很多地方都需要创建、删 阅读全文
posted @ 2017-03-13 14:58 郑哲 阅读(312) 评论(0) 推荐(0) 编辑
摘要: .head .cpp 阅读全文
posted @ 2017-03-10 19:36 郑哲 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-03-10 18:16 郑哲 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 信号量(资源)的自动获得和释放: 用户在使用TSemphore这样的类时,必须记住使用Acquire成员函数来获得信号量。更重要的是,在离开函数前必须释放信号量(使用Release)。 必须记住每次退出函数时,都要释放信号量,否则会产生错误. 为了避免这样的麻烦,我们可以使用辅助类来自动获得和释放信 阅读全文
posted @ 2017-03-10 18:10 郑哲 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 若未声明或实现该赋值操作符,编译器将自动生成一个默认赋值操作符。 实现类似以下代码: 实现: 1 TPoint2D::operation = (const TPoint2D& source 2 { 阅读全文
posted @ 2017-03-09 22:50 郑哲 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 1.我们没有在类中实现拷贝构造函数,那么编译器会自动产生一个默认拷贝构造函数 该拷贝构造函数将执行数据成员的逐个成员复制。类似于以下代码: 1 TPerson::TPerson(const TPerson &sourse) 2 :birthDate(sourse.birthDate),name(so 阅读全文
posted @ 2017-03-09 19:48 郑哲 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1.无用单元: 指一块存储区(或资源),该存储区虽然是程序(或进程)的一部分,但是在程序中却不可再对其引用。 按照C++的规定,我们可以说,无用单元是程序中没有指针指向的某些资源; 例如: 2.悬挂引用: 当两个指针同时指向一个地址时,通过一个指针删除了该地址的数据,另一个指针就产生了悬挂引用。 无 阅读全文
posted @ 2017-03-09 19:25 郑哲 阅读(746) 评论(0) 推荐(0) 编辑
摘要: 注:尽量初始化对象的所有数据成员,防止未初始化被调用。 1.使用构造函数初始化: ① char *name; char *address; long birthdate; ② 使用已有设置数据成员的函数 ③ 若数据成员为const类型,直接修改,则使用C++自带的初始化器; const long b 阅读全文
posted @ 2017-03-09 18:06 郑哲 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 啊啊啊 阅读全文
posted @ 2017-03-09 18:06 郑哲 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 这个算法的计算次数: 1.当n是偶数,一共是n/2组,每组进行3次比较,但第一组只要一次比较,所以一共需要(3n-4)/2次比较; 2.当n是奇数,一共是(n+1)/2组,每组进行3次比较,但第一组是1次而最好一组是2次,所以一共需要(3n-3)/2次比较。 可以证明这个算法是最优的,证明可在其他书 阅读全文
posted @ 2017-03-02 10:02 郑哲 阅读(247) 评论(0) 推荐(0) 编辑