C++ FAQ Celebrating Twenty-One Years of the C++ FAQ!!!
(Click here for a personal note from Marshall Cline.)
Contents - 40 sections.
12345678910111213141516171819202122232425262728293031323334353637383940 ]
About the Author.
Marshall Cline
cline@parashift.com
Topical index - 5676 links to 3571 topics.
ABCDEFGHIJKLMNOPQRSTUVWXYZ ]
Search the C++ FAQ.
Recent changes - 11 changed FAQs.
In a list, or in a chain, or here: [4.1], [4.2], [6.3], [6.12], [10.3], [15.22], [27.15], [35.13], [35.14], [35.15], [39.6].
Mirrored in 11 countries.
USA, France, Germany, Ireland, Israel, Italy, Poland, Portugal, Spain, Taiwan, U.K..
C++ FAQ topics beginning with 'I'

ABCDEFGHIJKLMNOPQRSTUVWXYZ ]

  • I/O; translations of end-of-line sequences ... [15.12], [15.13]
  • Identity of an object ... [36.11]
  • Idioms
  • if (std::cin >> foo) and std::istream (input/output) ... [39.2], [39.3]
  • if (std::cout << foo) and std::istream (input/output) ... [39.1]
  • if
    • Avoiding decision logic via virtual functions ... [20.6]
    • Some are eliminated by try / catch / throw ... [17.1]
    • Unnecessary ifs increase bugs, cost, time-to-market ... [17.1]
    • within macros ... [39.4]
  • if keyword ... [17.1]
  • ignore() and std::istream (input/output) ... [15.3]
  • IMAO (Acronym) ... [5.1]
  • IMHO (Acronym) ... [5.1]
  • Immutable (const) pointers (Const correctness) ... [18.5]
  • Immutable (const) pointers ... [18.5]
  • IMNSHO (Acronym) ... [5.1]
  • IMO (Acronym) ... [5.1]
  • Imperfect programming languages ... [6.2]
  • Improper inheritance: behavior, not just interface ... [21.12]
  • #include
  • include
  • Increment operator: operator++ ... [13.9], [13.13]
  • Increment operators operator++ (see also Operator overloading) ... [13.14], [13.15]
  • Indirection, Extra layers of ... [31.5]
  • Industrial Strength C++ ... [27.13]
  • Inequality test operator: operator!= ... [13.9], [13.13]
  • Infinite recursion, Serialization and ... [36.11]
  • Infinity: floating point numbers ... [29.15]
  • Infix operators ... [5.3]
  • Inherit your own exception classes (ultimately) from std::exception (see also under Exceptions) ... [17.12]
  • Inheritance ... [6.8], [19], [20], [21], [22], [23]
  • Inheritance but no pointers, Serialization and ... [36.8]
  • Inheritance, Multiple ... [25]
  • Inheritance, private ... [24], [24.1]
    • Access rules ... [24.6]
    • Compared with composition ... [24.2]
    • Criteria for private inheritance vs. composition ... [24.3]
    • Derived* to private Base* conversion (invalid) ... [24.4]
    • private vs. protected inheritance ... [24.5]
  • Inheritance, protected ... [24]
    • Access rules ... [24.6]
    • protected vs. private inheritance ... [24.5]
  • Inheritance, Virtual ... [25]
  • init() functions ... [10.3]
  • Initialization lists
  • Initialization of a built-in/intrinsic type ... [10.18], [26.9]
  • Initialization of a static const member datum ... [10.13]
  • Initialization of a static member datum ... [10.11], [10.12], [10.14], [10.15], [10.17]
  • Initialization of instances via constructors ... [10.1]
  • Inline functions ... [9]
    • Better than #define macros ... [9.5]
    • Can make executables larger ... [9.3]
    • Can make executables smaller(!) ... [9.3]
    • Can make performance better ... [9.3]
    • Can make performance worse(!) ... [9.3]
    • Can make thrashing happen ... [9.3]
    • Can make thrashing not happen(!) ... [9.3]
    • Can make zero speed-difference(!) ... [9.3]
    • Defined outside class body ... [9.7]
    • Defined within class body ... [9.8]
    • Forward declarations ... [39.13]
    • Functionoids ... [33.14]
    • Inlining virtual functions ... [31.5], [31.6]
    • Like a #define macro ... [9.1]
    • Member functions ... [9.7]
    • Non-member functions ... [9.6]
    • Procedural integration ... [9.2]
    • Safety without loss of speed ... [6.8], [9.4]
  • inline keyword ... [9.1], [9.6], [9.7], [9.9], [39.13]
  • Input/output ... [15]
    • Bad input, ignoring ... [15.3]
    • Binary mode ... [15.13]
    • Binary mode on MS-DOS ... [15.12]
    • clear() and std::istream ... [15.3]
    • Ending lines: std::endl vs. '\n' ... [15.7]
    • eof and std::istream ... [15.2], [15.5]
    • if (std::cin >> foo) and std::istream ... [39.2], [39.3]
    • if (std::cout << foo) and std::istream ... [39.1]
    • ignore() and std::istream ... [15.3]
    • invalid input characters and std::istream ... [15.2], [15.3]
    • operator>> and std::istream ... [15.10]
    • operator<< (virtual) and std::ostream ... [15.11]
    • operator<< and std::ostream ... [15.8], [15.9]
    • remembering bad state and std::istream ... [15.6]
    • std::istream and clear() ... [15.3]
    • std::istream and eof ... [15.2], [15.5]
    • std::istream and if (std::cin >> foo) ... [39.2], [39.3]
    • std::istream and if (std::cout << foo) ... [39.1]
    • std::istream and ignore() ... [15.3]
    • std::istream and invalid input characters ... [15.2], [15.3]
    • std::istream and remembering bad state ... [15.6]
    • std::istream and while (std::cin >> foo) ... [15.4]
    • std::istream operator>> ... [15.10]
    • std::ostream operator<< (virtual) ... [15.11]
    • std::ostream operator<< ... [15.8], [15.9]
    • while (std::cin >> foo) and std::istream ... [15.4]
  • Insecure, pathetic wannabes ... [9.9]
  • Inspector methods ... [18.10], [18.11], [18.12]
  • Installed base of C++: size ... [6.6], [6.8]
  • Instance initialized via constructors ... [10.1]
  • Instance-data formats, Version numbers during serialization ... [36.7]
  • int main(), not void main() ... [5.8], [29.3]
  • int: choosing between integer sizes ... [29.5]
  • Integration, Procedural ... [9.2]
  • Interfaces
    • A simplified view in the user's vocabulary ... [7.3]
    • Abstract base classes (ABCs) ... [22.2]
    • Design interfaces from the outside-in ... [13.13]
    • Goal of interface design ... [7.4]
    • More valuable than implementation ... [22.1]
    • protected interface ... [19.7], [19.8], [19.9]
    • Separate from implementation ... [22.2]
  • International Obfuscated C Coding Contest ... [27.14]
  • Interview questions ... [6.14]
  • Intrinsic (built-in, primitive) data types ... [26]
  • Intuition isn't always correct ... [21.3], [21.4], [21.6], [21.7], [21.8], [21.9], [21.11]
  • Invalid conversion
    • array-of-Derived array-of-Base ... [21.4]
  • Invalid conversion: Derived** Base** pointers ... [21.2]
  • Invalid conversion: Foo** Foo const** pointers ... [18.17]
  • Invalid input characters (see Input/output) ... [15.2]
  • invalid input characters and std::istream (input/output) ... [15.2], [15.3]
  • Inversion, Law of ... [20.6]
  • iostream header ... [15.1]
  • iostream.h (see "iostream header") ... [15.1]
  • Is-a-kind-of (see also Inheritance) ... [19.2], [21.12]
  • Isaacson, E. ... [29.17], [37.7]
  • ISO ... [6.12]
  • istream and clear() (input/output) ... [15.3]
  • istream and eof (input/output) ... [15.2], [15.5]
  • istream and if (std::cin >> foo) (input/output) ... [39.2], [39.3]
  • istream and if (std::cout << foo) (input/output) ... [39.1]
  • istream and ignore() (input/output) ... [15.3]
  • istream and invalid input characters (input/output) ... [15.2], [15.3]
  • istream and remembering bad state (input/output) ... [15.6]
  • istream and while (std::cin >> foo) (input/output) ... [15.4]
  • istream input operator: operator>> ... [15.4], [15.10], [39.2], [39.3]
  • istream operator>> (input/output) ... [15.10]
  • istringstream ... [39.2], [39.3]
  • Iterators ... [34.5]
  • itoa() ... [39.1]