syne

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2018年7月12日

摘要: c++primer plus 629页 引发异常时编译器总是创建一个临时拷贝 630页 既然throw语句将生成副本,为何代码中使用引用呢?毕竟,将引用作为返回值的通常原因是避免创建副本以提高效率。答案是,引用还有另一个重要特征:基类引用可以执行派生类对象。假设有一组通过继承关联起来的异常类型,则在 阅读全文
posted @ 2018-07-12 19:29 syne 阅读(111) 评论(0) 推荐(0)

2018年7月5日

摘要: #pragma once #ifndef CD_H_ #define CD_H_ //base class class Cd { private: char * performers; char * label; int selection; //number of selection double 阅读全文
posted @ 2018-07-05 09:33 syne 阅读(131) 评论(0) 推荐(0)

摘要: 在第1题里面,因为两个类的成员都自己开辟了数组空间,所以使用默认的复制构造函数和重载赋值运算符就好。 析构函数一定要写成虚函数 顺便提一提复习题第3题:在重载运算符里,返回引用和返回对象有什么区别?返回对象并不会报错,但是效率会比返回引用低 #pragma once #ifndef CD_H_ #d 阅读全文
posted @ 2018-07-05 07:51 syne 阅读(142) 评论(0) 推荐(0)

2018年7月2日

摘要: 是否会动态联编,只看基类的那个函数是否有virtual,派生类里有没有virtual没关系 下面是测试的代码 #pragma once #ifndef TEST_H_ #define TEST_H_ //basic class class test { private: int x; public: 阅读全文
posted @ 2018-07-02 21:07 syne 阅读(251) 评论(0) 推荐(0)

摘要: c++primer plus第6版中文版 首先,公有派生(继承)的方式,基类是一个公有基类。派生类对象包含基类对象。使用公有派生,基类的公有成员将成为派生类的公有成员;基类的私有部分也将成为派生类的一部分,但是基类的private部分只能通过基类的公有成员和保护方法访问。 派生类不能直接访问基类的私 阅读全文
posted @ 2018-07-02 11:08 syne 阅读(509) 评论(0) 推荐(0)

摘要: 一开始的程序里 类不能连续赋值,内存会报错。debug了一整晚发现是new里面的数组n++出错。经过测试++n和n+1都能使程序正确运行。 n++会报错是因为先使用n,再对n加1。而我们的期望是开辟一个n+1长度的数组而不是n,所以会报错。 在单语句中,自增运算和普通的加法没有区别,但是在这种复合语 阅读全文
posted @ 2018-07-02 07:56 syne 阅读(204) 评论(0) 推荐(0)

2018年6月30日

摘要: 如果方法或函数要返回局部变量,就应该返回对象,而不是指向对象的引用(这里如果返回引用,会因为局部变量被释放,指向一个无意义的对象而出错)。在这种情况下,将无可避免地使用复制构造函数来生成返回的对象。如果方法或函数要返回一个没有公有复制构造函数的类(如ostream)的对象,它必须返回一个指向这种对象 阅读全文
posted @ 2018-06-30 11:38 syne 阅读(241) 评论(0) 推荐(0)

2018年6月29日

摘要: 如果类中包含了使用new初始化的指针成员,应当定义一个复制构造函数,用来复制指向的数据而不是指针(深度复制)。 复制的另一种形式(成员复制)(浅复制)只是复制指针值。 要深度复制是因为普通的默认复制构造函数只会进行复制地址,在形参释放的时候,调用析构函数,会释放地址所指向的内容的内存,使得原对象(s 阅读全文
posted @ 2018-06-29 17:21 syne 阅读(368) 评论(0) 推荐(0)

摘要: c++prime plus 428~430. str是个指向new 字符数组的指针。在方法cpp中的构造函数里,要用strcpy()将传递的字符串复制到新的内存里。std::strcpy(str, s); 那么为什么不能直接用str = s呢? 原因是字符串并不保存在对象中。字符串单独保存在堆内存里 阅读全文
posted @ 2018-06-29 11:27 syne 阅读(222) 评论(0) 推荐(0)

摘要: c++primer plus 427页读书笔记。 静态存储类。静态成员有一个特点:无论创建了多少对象,程序都会只创建一个静态变量副本(即使是在循环中,静态的初始化语句也只在第一次生效),也就是说类的所有对象共享一个静态成员。 在程序12.1,和程序12.2中我们可以看到,static int num 阅读全文
posted @ 2018-06-29 08:07 syne 阅读(1472) 评论(0) 推荐(0)