最近在学C++,感觉C++里面要注意的地方实在是太多了,很难记下来。当然,通过努力,还是可以记住的,但是相比之下,花费那么多时间做这事也是不值得的!
看tc++pl时候,发现他的书里大量的讲解了c++的实现方法。并且说明了不那样实现就如何如何变的难处理了。比如基类的指针可以指向派生类,但是反过来却不行,如果反过来也可以,那么用指向基类的派生类指针去访问新成员时将无法处理,例如:
class cs1
{...};
class cs2 :public cs1
{public:int a;...};
void f(void)
{
cs1 c1,*p1;
cs2 c2,*p2;
p2=&c1;//派生指针指向基类,错误的
p2.a;//并且这里将无法处理
}
其实即便他不说,自己想想也能明白这样做会陷入困境。自己都想不明白的东西,别人基本也不会那么做的。
长时间这样思考,结果发现,书上写的实现原理,大部分都和我想的一样。
由此总结出了一个小经验,当你忘记了或者想记住C++的某些地方时,就想一下如果换成你,你会怎么设计(我通常就想:如果是我,我会用C这么写C++!),如果不那样会如何?会不会变的无法处理。
其实多半时候,都能和C++的思想共鸣。
当然,这里只是说“忘记了”和“想记住”的情况,前提是你先了解(掌握)C++,一点都不知道,光凭感觉想的程序一定是bug百出了~~
就算是你想的和C++不一样,也没关系,多半情况是会被编译器捕捉到的!而且在不能确定的地方一定要去查书!嘿嘿~
只是我自己“助记”的一点观点,既“记住”了C++,有锻炼了自己的思维,我也是C++初学。也许这只适合我。打算要学CPP但不知道如何学的,可以见解下,但是要用智慧来分辨这是否适合自己。还希望正在学CPP的和学过CPP的给我点指点。最好是有人用过同样的方法,证明过这个方法是成功的。
也许这方法也适合学其他东西,在说一点,我觉得tc++pl不是不能学的!虽然他很厚,前几章也比较难(上来就介绍个分析器,确实让人难以接受,我看这里的时候,分析器的代码跳过去没看,只了解了一下他的代码组织方式),但这都不是最困难的地方,最困难的是相信自己,只要努力看下去,就能学会了!(话虽这么说,但是没有语言基础的话,直接来这书因该要很努力才行!)。
最后,一起努力吧!一切都是为了It of china!