C++基础回顾一

类的易忘特性:

近期,翻看基础的《C++ Primer》,温故而知新,希望自己养成好习惯,在某一领域深耕耘,路漫漫而修远,吾将上下而求索。

1.类的内联成员函数:在类中常有一些规模较小的函数适合于被声明成内联函数,定义在类内部的成员函数是自动inline的。

2.可变数据成员-mutable
可变数据成员永远都不是const,即使它是const对象的成员。

    class Screen {
        public:
            void some_member() const;

        private:
            mutable size_t access_ctr;
    };
    Screen::some_member() const
    {
        ++access_ctr;
    }

3.封装性
工作数月,对于封装性的体悟就是:封装类时,要确定其功能、哪些接口提供给外部使用,哪些接口需要隐藏。
下面是书中阐述比较好的解释:

  • 确保用户代码不会无意间破坏封装对象的状态;
  • 被封装的类的具体实现细节可以随时改变,而无须调整用户级别的代码。

3.友元再探
1.友元不具有传递性
2.友元类的成员函数可以访问此类的非公有成员在内的所有成员

class Screen{
    friend class Window_mgr;
}

class Window_mgr{
    public:
        using ScreenIndex = std::vector<Screen>::size_type;
        void clear(ScreenIndex);

    private:
       std::vector<Screen> screens{Screen(24, 80, '')};
}
void Window_mgr::clear(ScreenIndex i)
{
    Screen &s = screen[i];
    s.contents = string( s.height * s.width, '');//Window_mgrScreen类的友元类,故可以访问 Screen类的私有成员height 和width
}

4.建议:使用构造函数初始化值
1.如果成员是const或者引用的话,就必须将其初始化。
2.初始化和赋值的区别在于:初始化是直接初始化数据成员,赋值则先初始化再赋值。

5.字面值常量类
constexpr函数的返回值和参数都是字面量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值