C++ 隐含的this 指针

本文介绍了一个简单的 C++ 屏幕管理类 Screen 的设计与实现细节。该类能够设置屏幕上的字符,并提供了移动光标和显示屏幕内容的功能。通过具体的代码示例展示了如何使用 Screen 类来操作屏幕。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++primer   页数:376-379 备份, 很有嚼头

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

class Screen
{
    public:
        typedef string::size_type index;
        Screen(index r, index c) : row(r), col(c), contents(r * c, 0) {};
        Screen& set(index r, index c, char val);
        Screen& set(char val);
        Screen& move(index r, index c);
        Screen& display();
        const Screen& display() const;
    private:
        string contents;
        index cursor;
        index row, col;
        void do_display() const
        { cout << contents << endl;}

};

Screen& Screen::set(index r, index c, char val)
{
    contents[r * col + c] = val;
    return *this;
}

Screen& Screen::set(char val)
{
    contents[cursor] = val;
    return *this;
}

Screen& Screen::move(index r, index c)
{
    cursor = r * col + c;
    return *this;
}

Screen& Screen::display()
{
    do_display();
    cout << "not const" << endl;
    return *this;
}

const Screen& Screen::display() const 
{
    do_display();
    cout << "const" << endl;
    return *this;
}

int main()
{
    Screen s(3, 4);
    s.set(0, 0, 'a');
    s.set(0, 1, 'b').set(0, 2, 'c').display();
    const Screen mys(4, 5);
    mys.display();

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值