First of all, let me state that: I can only say a few things about it (C++ is too broad:))
Mr. Meng Yan once mentioned that "C++ needs a free heart." I want to say "C++ requires a free heart and hands". I'm sure the freedom I think of is different from Mr. Meng Yan's freedom.
Because my personal interpretation of freedom is: "Use your own freedom" Ideas come from writing verification usecases freely"
In terms of personal learning experience:
1. In the process of learning C++, you first need to practice it solidly C++ basic tutorial, this tutorial is not deep but comprehensive. It allows you to have an overview. It is best to practice with basic data structures. Don’t spend the whole day saying Hello World~~Hello MM.
2. Come down. You need "(More)Effective C++", which allows you to think more about C++ and learn some techniques and misunderstandings. However, you need to practice it simultaneously, otherwise you may not be able to truly master these techniques and avoid them for a while. Misunderstanding.
3. To improve, you need: (The following book may have been broken:))
"Design Pattern": Personal feeling, although design pattern is a kind of thinking The method, in terms of specific implementation, is just
the exploration and clever combination of OOP languages. And the combination here is the main thing,
the features are limited, there are several in this book The pattern does not use virtual attributes?
C++ Standard Document: When you use it to do special research, you will realize what is real
Comprehensive and deep (naturally Refers to the explanation of syntax and semantics).
"STL Source Code Analysis": Without a deep foundation, it is impossible to learn STL source code behind closed doors.
However, this This article also focuses on the explanation and guidance of key technologies~~
There are many famous books about GP and STL, but I have not read them. Don't judge.
"Inside The C++ Object Model": The most valuable book. Without it, C++ will always be a mystery, even if you have been immersed in it for N times~~
p>
"Moden In C++ Design": Many of the ideas here are difficult to access with your own thinking~~:)
I have to admire Andrei Alexandrescu.
Other C++ books on the market are pretty good. I feel that except "The Design And Evolution Of C++", it is a different product and worth reading. It is not recommended to spend too much time on other books, even Bjarne Stroustrup, Stanley B.Lippman, etc. Of course, it would be better if you have time to read. Anyway, I regret a little now. At first, I only focused on reading too many books and did not care about reading deeply and reading them repeatedly. Classic books are not about the number of copies, but the number of times they are read. Speaking from experience, People on BBS often point out without thinking that when introducing COM technical books, the entry-level <
The authors of domestic books are good at writing, but they may not understand it themselves:) What materials are copied:)?
4. Immerse yourself in it No matter how long the syntax and semantics of the language itself are, you may not be able to penetrate into its subtleties.
You need to learn practical works (techniques) that apply this language. You can study some FrameWork or some specific technologies such as CORBA, COM, etc. Just personally, I have been exposed to C++ for about ten months, and my understanding of Virtual has changed several times. This is the first time in "Inside The C++ Object Model", and in "Inside The C++ Object Model". This is the second time that COM's binary-compatible layout requirements are solved by virtual mechanisms in "The Essence of COM". So far, what impressed me most about virtual is whether the components in Automation technology have the ability to analyze the virtual structure due to the environment. Which leads to the question of whether to distribute interfaces. If you hold a book like "C++ Syntax and Semantics in Depth" all day long, I don't know when you will really understand many features of C++.
Even if you can teach others Talking about a lot of things, this will work~that will not work~~and so on~~:)
During this whole process, I like to say this to my students, you need to always use various aspects of C++ Features are mixed and brewed in my mind over and over again, which is why I emphasize on learning the basics and require all the knowledge points in the textbook. Often, I freely write, modify, and add UseCase in order to study certain features, which I think is very good. A habit. Memorizing other people’s experiences all day long. I don’t know how many layers I will still remember after a few months:)?
Maybe the above description is a bit summary:)?
In short , I think learning C++ requires more thinking (for example, if you think about why template class inheritance does not support virtual, templates
class inheritance, what is the relationship between base class instances and inherited class instances), < /p>
Write more usecases,
Mix a bunch of features (such as template class
member signatures, multiple nested template class member signatures, nested Class and package class life cycle
Control, etc.)
It is important to choose the application direction as early as possible (this is very important, additional personal opinion: most people think that theory is very
< p> Difficult, but I have to say: application is also difficult:)).Compare the theories in 00 Engineering with your own behavior in a timely manner.
Later :
As mentioned above, it is just for application. Comparing languages ??is meaningless. However, what I want to say is that I dare not imagine that people who have not been tempered by C++ can do it. Study C# in depth (in fact, I have never thought that C# is easier to learn than C++, but their in-depth points are different. I would venture to say that many difficulties in C++ are artificially created). As far as the current situation is concerned, it is still This is due to factors such as C++ history,
community, and resources.