Effective C + + ' ning to pass-by-reference-to-const replace Pass-by-value 'By default, C + + passes an object to a function by value (a way that inherits from C). Unless you specify otherwise, the function parameter is the initial value of the actual copy (Dungeon), and the return of the function is also a duplicate o
01. View C + + as a language federation
C
object-oriented C + +
Template C + +
Stl
Process form (procedural), Object-oriented form (object-oriented), function form (functional), generic form (generic), meta-programming form (metaprogramming)
questions:
What is the di
customer is very concerned about space, then use Ebo. Ebo generally only under a single inheritance, the rules governing the layout of C + + objects usually indicate that Ebo cannot be implemented derived classes with more than one base.The empty class is not really empty. They often contain typedef, enum, static, or-virtual functions. SLT has many technical uses of the empty classes, which contains members (usually typedefs), including base classes
following three cases the compiler will refuse to generate the copy assignment operator automatically:A, the class contains reference members (because C + + does not allow changing the reference variable)b, the connotation of the const member variableC, base class declares the copy assignment operator as privateArticle 06: If you do not want to use the compiler automatically generated functions, it should be explicitly denied1. Declare the copy funct
"Effective C + +"Article 31: Minimize compilation dependencies between filesLet's say you made some minor changes to a class implementation file for a C + + program. Note that the modification is not the class interface, but rather the implementation, and only the private component is changed. Then rebuild the program and expect it to take just a few seconds. Aft
between each other is only the respective traits parameters. Each function implements a match with the traits information it receives.
Create a control function or function template (such as advance), call the function above and pass the traits class information.
Traits is widely used in STL. In addition to the above mentioned iterator_traits, there are char_traits to hold information about the character type. Numeric_limits is used to hold information about numeric types.TR1 (* * clau
original articles, reproduced please specify the source:http://blog.csdn.net/sfh366958228/article/details/38845319ObjectiveToday's task for yourself is to read the second chapter of "Effective C + +", a breath to see the amount is not large, the remainder of this chapter is relatively short, to see the terms today.Article 08: Don't let exceptions escape destructorsAs the literal meaning of the clause, do no
1. Make yourself accustomed to c++01. Depending on C + + as a language federation, remember:c++ the code of effective programming varies depending on what part of C + + you use02. Try to replace # define with Const,enum,inline, remember: For simple variables, it is best to
consequences, so when you use the combination instead of inheritance, have not encountered the book mentioned in the And the large number of web-based inheritance of STL problems.
A base class with polymorphic properties should declare a virtual destructor. Any class with the virtual function should have a virtual destructor.
If a class does not want to be inherited as a base class or is not designed to be polymorphic, the virtual destructor should not be declared. (STL container d
by copying auto_ptr2) auto_ptr3) found auxiliary copy constructor auto_ptr (auto_ptr_ref4) Attempt to convert auto_ptr5) Find the type conversion function operator auto_ptr_refThus, a copy constructed right value (temporary object) was successfully implemented by an indirect class.At the same time, this helper method does not cause the const auto_ptr to be copied, because in the 5th step, this type conversion function is Non-const, and we know that the Const object cannot invoke the Non-const m
, otherwise, if you read private data, then you have to become a friend function. Here's another important conclusion: the inverse of the member function is the Non-member function, not the friend function. If you can avoid being a friend function, it is best to avoid it, because friend's encapsulation is lower than non-friend.When you need to consider a template, there are some new solutions when you change class to class template. This is mentioned in clause 46 below.Summary: If a type convers
NI? Don't worry, let me explain: When the compiler encounters the Loggingmsgsender definition, because company is a template parameter, not until Loggingmsgsender is present,The compiler has no way of knowing what company is. Because it is impossible to know what company is, it cannot determine what msgsender is, and it cannot know if it has a sendclear function. Stop, you may be explaining to me now that there is a question: why can't you be sure what company is based on template company? The
. Using nothrow new only guarantees that operator new does not throw an exception, and there is no guarantee that an expression like the new (Std::nothrow) widget does not throw an exception. Therefore, there is no need to use nothrow.Summarize
Set_new_handler allows a client to specify a function that is called when the memory allocation is not met.
Nothrow New is a fairly limited tool because it only applies to memory allocations, and subsequent constructor calls are likely to thr
Before learning C language, our teacher taught us that it is best to define a number with a macro (#define). So that I have been accustomed to #define age 12.
In the C language environment, this is indeed an effective way to increase the readability of the program, but in C + +, you can have a more graceful implementa
++14, which uses auto as a parameter (thus producing a generic lambda expression):std::vector v;....auto resetV = [v](const auto newValue) { v = newValue;};//C++14 only....resetV({1, 2, 3}); //error! can‘t deduce type for {1, 2, 3}The end result is that if you do not initialize with curly braces, the auto type deduction is consistent with the template type deduction. In this case only (with curly braces for initialization), Auto is deduced
Effective Modern C ++ translation-Clause 2: Understanding auto automatic type Derivation
Clause 2: Understand auto type deduction
If you have read section 1 about template type derivation, you have almost all about auto type derivation. As to why auto type derivation is a template type derivation, there is only one curiosity. What is that? That is, template type derivation includes templates, functions, and
09 : Never call in the construction and destruction process Span style= "Font-family:times New Roman" >virtual functions ? because baseclass Constructors are executed earlier than derivedclass constructor, when baseclass When the constructor executes derivedclass The member variables of virtual The function drops to derivedclasses class, and derivedclass local member variables, and those member variables are not initialized at this time, will lead to ambiguous behavior
Effective C + + Chapter 2. Construction/destructor/assignment operations (constructors, destructors, and assignment Operators) Item 6. If you don't want to use the compiler's auto-generated function, you should explicitly reject it (explicitly disallow the compiler-generated functions you does not want) Real estate agents sell houses, and an intermediary software system naturally must have a class to descri
for built-in types to facilitate proper use. The means of identifying misuse include creating a new type, restricting the operation of the type, restricting the value of the object, and removing the customer's resource management responsibilities.
Unless noted, this blog article is original, reproduced please link to the form of this article address: http://harttle.com/2015/08/09/effective-cpp-18.html Copyright NOTICE: This article is for blogg
"Effective C + +"Clause 20: Prefer to replace pass-by-value with Pass-by-reference-to-constBy default, C + + passes an object to a function by value. Unless you know otherwise, the function parameter is the initial value of the copy of the actual parameter, and the call end is also a duplicate of the function return. These duplicate systems are produced by the co
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.