好的学习方法,不但能提高学习的效率,同时也会为你节省大量的宝贵时间去做自己想做的事情。
今天在这里给大家分享下个人的学习感悟。
追本溯源:顾名思义就 追究根本,探索源头。
任何知识只要抓住事情的源头,一切都变得南无"举重若轻"了。
简单的通过例子向大家展示。
1) 关于拷贝构造函数的调用问题
拷贝构造函数在以下三种情况下会被调用
1、用已有对象为新对象初始化
2、如果一个函数的形参为某类对象时,当给函数被调用时,拷贝构造函数会被调用
3、函数的返回值为某类对象时,会被调用
那么我们先来分析下,拷贝构造函数的定义:
拷贝构造函数是,在建立一个新对象是,使用一个已经存在的对象去初始化这个新对象。
简单的说就是:用已有对象为新对象赋初值。
那么 情况1 就很容易被我们接受了,就是拷贝构造函数的定义
情况2,在函数调用时,需要一个已有的类对象作为实参,为形参赋值,
这里形参为新对象,而实参为已有的对象,用已有的对象为新对象赋初值,符合要求,
拷贝构造函数被调用
情况3,函数返回值为类对象时,该返回值为已有对象,将此对象复制给一个临时的新对象
并传到该函数的调用处。也符合拷贝构造函数要求。在该情况中,通过创建这个临时对象,并为其
赋初值,这里调用拷贝构造函数,随后可能调用拷贝构造函数,也可能调用赋值运算符重载函数,读者自己考虑下。
2)const 常数据类型
const char *P=“abc”;
char * const P="abc";
const 表示的是常数据类型,那么const char 表示的就是常字符串,该字符串不允许被修改
而 char * const P,表示的常指针,表示该指针指向特定的内存空间,指向的内容可以修改