syne

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

06 2018 档案

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

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

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

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

摘要:#pragma once #ifndef COMPLEX0_H_ #define COMPLEX0_H_ #include class Complex { private: double real; double imgn; public: Complex(); Complex(double a, double b); ~Complex(); C... 阅读全文
posted @ 2018-06-28 20:50 syne 阅读(101) 评论(0) 推荐(0)

摘要:c++prime plus 383页有例子 不要返回指向局部变量或临时对象的引用。函数执行完毕后,局部变量和临时对象将消失,引用将指向一个不存在的数据。 阅读全文
posted @ 2018-06-26 17:45 syne 阅读(136) 评论(0) 推荐(0)

摘要:https://www.cnblogs.com/AndyJee/archive/2014/07/02/3821067.html --来自AndyJee 阅读全文
posted @ 2018-06-26 14:57 syne 阅读(129) 评论(0) 推荐(0)

摘要:下面有个例子: const Stock land = Stock("abc"); land.show();//这行报错 原因是show()函数的代码无法确保调用对象不被修改,而调用对象应该和const一样不被修改。 所以这里应该在函数声明里: void show() const; 同时在函数定义的开 阅读全文
posted @ 2018-06-25 09:58 syne 阅读(152) 评论(0) 推荐(0)

摘要:在使用自己写的头文件时候要用" ","student.h",而不是像<iostream>一样用尖括号呢? 原因:如果文件名包括在尖括号中,则c++编译器将在存储标准头文件的主机系统的文件系统中查找;但是如果文件名是包含在双引号中,c++的编译器会首先查找当前的工作目录或者源代码目录(或其他目录)。如 阅读全文
posted @ 2018-06-24 11:24 syne 阅读(146) 评论(0) 推荐(0)

摘要:首先引用&是别名,(int &a = b;)a是b的别名,实际上还是b,类型也是int(&); 对于引用的操作实际上是作用在引用所引的对象上面,在许多函数中,通过使用引形参来改变一个或多个实参的值。 为什么要用引用呢?例如在包含string类的函数中,传递的string形参一般写作 const st 阅读全文
posted @ 2018-06-24 09:57 syne 阅读(3518) 评论(0) 推荐(0)

摘要:要创建一个类对象,可以声明变量,也可以使用new为类对象分配存储空间。 声明和new的不同在于 作用域和生存周期 1.声明的作用域限制在定义类对象的方法中,当方法结束时,类对象也被系统释放了,(安全不会造成内存系统泄漏)。 2.new 创建的是指向类对象的指针,作用域变成了全局,当程序结束时,必须用 阅读全文
posted @ 2018-06-23 21:17 syne 阅读(663) 评论(0) 推荐(0)

摘要:1.让指针指向一个常量对象,这样可以防止使用该指针来修改所指向的值。 即指向的内容固定,这个指针可以指向其他的地方,但是不能改变所指向的内容 例子: int a = 1; const int *p = &a;(初始化指针时别忘了取地址符) a可以改变,p也可以改变;但是不能通过p改变a,即*p不能改 阅读全文
posted @ 2018-06-23 20:22 syne 阅读(117) 评论(0) 推荐(0)

摘要:1.string类有头文件,需要#include<string> 2.string和char数组类似,但是string比char数组使用起来更方便 (1)不可以将一个数组赋给另外一个数组(因为数组名是一个常量),但可以将一个string对象赋给另一个string对象 (2)string类简化了字符串 阅读全文
posted @ 2018-06-23 19:55 syne 阅读(169) 评论(0) 推荐(0)