进一步补充

1. static

类的非静态成员函数:由this指针隐式指定传入的参数

静态数据:与对象脱离,不属于对象,只有一份。例:银行账户类中的银行利率,可以有很多账户对象,但只有一份利率。

静态函数:与一般成员函数的区别是没有this pointer,只能处理静态数据(环环相扣)。

例:account类

class Account
{
    public:
        static double m_rate;
        static void set_rate(const double& x){m_rate=x;} //内联
}
double Account::m_rate = 8.0; //注:静态数据在类外定义,给不给初值均可
/*下面演示静态函数的两种调用方式*/
int main()
{
    Account a;
    a.set_rate(7.0); //1.通过对象调用
    Account::set_rate(5.0); //2.没有对象的情况下通过class name调用
}

 2. 设计模式singleton

只希望产生类的一个对象,不希望外界创建对象,构造函数写成私有的。

静态函数是将创建的对象return给外界的唯一窗口

class a
{
    public:
        static A& getInstance();
        setup() {...}
    private:
        A();
        A(const A& rhs);
};
A& A::getInstance()
{
    static A a;
    return a;
}

调用方法:

A::getInstance.setup();

上面的写法的弊端:如果外界不使用对象a,会造成一定的浪费

改进:只有需要时才会被创建

3. cout

为啥cout啥都能打印?看标准库中的内部实现

4.1 类模板

声明

template<typename T>
class Complex
{...};

 调用

Complex<double> c(...);

会造成代码膨胀,但是是正常的

4.2 函数模板

定义

template <class T>
const T& min(const T& a,const T& b)
{return b<a?b:a;}

调用

min(a,b)

编译器对函数模板进行实参(引数)推导argument deducion,不需要指出,然后调用运算符重载进行大小比较 

5. namespace 

语法:namespace关键字+名称+花括号

可以分段写

using directive: 全开

using declaration:一行一行打开

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值