Skip to Content
Navigating C++ and Object-Oriented Design
book

Navigating C++ and Object-Oriented Design

by Paul Anderson, Gail Anderson
October 1997
Intermediate to advanced
800 pages
20h 48m
English
Pearson
Content preview from Navigating C++ and Object-Oriented Design

7.5. Putting It All Together

Lvalue and Rvalue Separation

The String class in this chapter provides an overloaded operator()() for substrings as rvalues only. Recall that the notation s(position,count) is a substring of length count characters, starting with position in String s (position starts at 0). Now let's look at an example with substrings as lvalues and rvalues.

String s1 = "alphabet"; 
cout << s1(5,3) << endl;         // rvalue - substring "bet"
s1(5,3) = "ray";                 // lvalue - s1 is now "alpharay"

We also need to make lvalues behave properly for constant substrings.

const String s2 = "alphabet";    // constant String 
cout << s2(5,3) << endl;         // rvalue - substring "bet"
s2(5,3) = "ray";                 // lvalue - error, s2 is constant

Substrings are interesting ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Exploring C++20: The Programmer's Introduction to C++

Exploring C++20: The Programmer's Introduction to C++

Ray Lischner

Publisher Resources

ISBN: 0135327482Purchase book