Finally, I read c ++ primer again and again. I still cannot say that I have mastered all the knowledge in this book. The difficulty of C ++ is obvious to all, if it is just a simple content, it is still very easy. For example, the C ++ in my university middle school is very simple and there is no difficulty at all, this kind of dizzy feeling is only available when you really want to fully understand it.
C ++ is compatible with C syntax. When Oo is not used, it is basically no different from C. The most uncomfortable thing is that the pointer to an array, the array of pointers, and these things, do you still remember the sort of the first school interview? I can't remember clearly, but I still remember how I memorized the interview.
When objects are added, the pointer becomes troublesome. The main issue is release. c ++ requires programmers to manage the memory themselves, which is quite troublesome, the first is whether an object is in the stack memory, heap memory, or static storage zone. I first came into contact with these three objects in C. Obviously, C ++ still had them, where is the static member of the class? Static members also need additional definitions, and even include const static, declaration, definition, initialization, declaration and initialization. definitions are defined elsewhere, and your mom will not be alive.
The polymorphism will not be mentioned. Virtual is very boring and you need to point out the polymorphism by yourself. Isn't it the default? If you encounter more inheritance, it will have more meanings.
Replication control and implicit type conversion. In short, many of the things you use are conditional. You can control these things and you may choose something,
Template, and the concepts of the class begin to mix, you start to dizzy, don't stop dizzy. For template metaprogramming, you can copy a piece of code as follows:
# Include <iostream>
Using namespace STD;
Template <int n>
Struct factorial
{
Enum {value = N * factorial <n-1 >:: value };
};
Template <>
// Specialization)
Struct factorial <0>
// Recursively abort
{
Enum {value = 1 };
};
Int main ()
{
// The following is equivalent to cout <120 <Endl;
Cout <factorial <5 >:: value <Endl;
}
I can't understand it before, but I can't refer to it today. I don't know when to read the C ++ template metadata.
Take a look at the following Bibliography: C ++ in-depth series:
Accelerated C ++: practical programming by example, Andrew Koenig and Barbara E. Moo
Applied C ++: practical techniques for building better software, Philip romanik and Amy Muntz
The boost graph library: User Guide and reference manual, Jeremy G. siek, lie-Quan Lee, and Andrew lumsdaine
C ++ coding standards: 101 rules, guidelines, and best practices, Herb Suter and Andrei Alexandrescu
C ++ in-depth box set, Bjarne stroustrup, Andrei Alexandrescu, Andrew Koenig, Barbara E. Moo, Stanley B. Lippman, and herb Suter
C ++ network programming, Volume 1: Mastering complexity with Ace and patterns, Douglas C. Schmidt and Stephen D. Huston
C ++ network programming, Volume 2: systematic reuse with Ace and frameworks, Douglas C. Schmidt and Stephen D. Huston
C ++ template metaprogramming: concepts, tools, and techniques from boost and beyond, David Abrahams and Aleksey gurtovoy
Essential C ++, Stanley B. Lippman
Predictional C ++: 47 engineering puzzles, programming problems, and solutions, Herb Suter
Predictional C ++ style: 40 new engineering puzzles, programming problems, and solutions, Herb Suter
Modern C ++ design: Generic programming and design patterns applied, Andrei Alexandrescu
More than tional C ++: 40 new engineering puzzles, programming problems, and solutions, Herb Suter
After learning this, you can write on your resume that you are proficient in C ++.