【cpp语言】基础-3

static

语法:static加在变量或者函数之前
作用:在内存中存放到特定区域,一般一些固定的数据可以使用static,静态函数没有this指针,故静态函数只能处理static的数据。下面的代码是static的具体用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Acount {
public:
static double m_rate; //声明
static void set_rate(const double& x) {m_rate = x};
}
double Acount::m_rate = 8.0; //定义

int main() {
Acount::set_rate(5.0); //第一种调用static函数方法:通过class name调用

Acount a;
a.set_rate(7.0); //第二种调用static函数方法:通过object调用
}

把构造函数放在private域中: Singleton设计模式

1
2
3
4
5
6
7
8
9
10
class A {
public:
static A& getInstance (return a;); //通过此静态函数获得唯一的a
setup() {...}
private:
A(); //构造函数1
A(const A& rhs); //构造函数2
static A a;
...
};

cout

cout可以打印各种类型的值,原因是cout类里面写了各种类型的操作符重载。

类模板

类模板代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
template<typename T>
class complex {
public:
complex (T r=0, T i=0): re(r), im(i) {} //构造函数
comple& operator += (const complex&);
T real () const {return re;}
T imag () const {return im;}
private:
T re, im;

friend complex& __doapl (complex*, const complex&);
}

使用时可以如下使用:

1
2
complex<double> c1(2.5, 1.5);
complex<int> c2(2, 1);

函数模板

函数模板写法如下:

1
2
3
4
5
template <class T>  //类模板中是一个typename,二者是相通的
inline
const T& min (const T& a, const T& b) {
return b < a ? b : a; // <为stone的操作符重载
}

使用:函数模板使用时不必显式指明具体的T的类型,编译器会对function template进行实参推导,自动推理出实参的类型:

1
2
stone r1(23), r2(33);
r3 = min(r1, r2); //不必显式指定具体T的类型

namespace

namespace语法如下:

1
2
3
4
namespace std   //避免重名
{
...
}

使用命名空间:

1
2
using namespace std;    //全部使用
using std::cout; //仅使用cout

【cpp语言】基础-3
http://example.com/2022/06/23/【cpp语言】基础-3/
作者
leegaojun
发布于
2022年6月23日
许可协议