C++学习笔记(6)—— static,类模板,函数模板及namespace

static 静态

用法:在数据/函数前面 加 static

同一个函数可以处理不同的数据对象,靠的是this pointer。每个成员函数都会自动传入this pointer(不用自己写出来),黄色部分可写可不写(编译器会自己加)。

加了static的数据与对象脱离,不属于对象,内存会单独开一个区域,只有一份。静态数据一定要在Class的外面加一行定义(初始化、声明)。

加了static的函数,静态函数没有this pointer,不能像其他成员函数那样处理对象,只能处理静态数据。

调用static函数的方式有两种:
1. 通过对象调用            //a.set_rate(7.0);
2. 用过类名称调用        //Account::set_rate(5.0);

把构造函数ctors放在private

//Singleton设计模式
class A {
public:
    static A& getInstance( return a; );  //让外界能够访问到a
    setup () {...}
private:
    A();
    A(const A& rhs);        //两个构造函数都私有,那么外面没人能调用他们
    static A a;             //在private里放一个自己类型(A)的静态a;意味着已经存在一个A
    ...
};
A::getInstance() .setup();   //调用

问题:没人调用 a一直存在
改进:放进函数里,有人调用才会创建,离开函数依然存在

//Singleton设计模式
class A {
public:
    static A& getInstance( return a; );  //让外界能够访问到a
    setup () {...}
private:
    A();
    A(const A& rhs);        //两个构造函数都私有,那么外面没人能调用他们
    ...
};

A& A::getInstance()
{
    static A a;
    return a;
}

模板 class template

在类定义前 加 template<typename T>
calss<T> c1(); 

编译器看到不同的T,会得到不用的一段代码(或许会造成代码的膨胀)

 函数模板

 编译器自动将T变为stone,并且去找有无stone::operator<这个操作符重载

 namespace

避免同名,在std里的就不用写全名了

namespace std
{
...
}

using std::cout   // using declaration

 其他细节:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值