300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C++网易云课堂开发工程师--类模板

C++网易云课堂开发工程师--类模板

时间:2019-03-02 23:54:27

相关推荐

C++网易云课堂开发工程师--类模板

static

complex

data members

static data members

member functions

static member functions

非静态成员函数:non-static member functions

complex c1, c2, c3 complex c1, c2, c3

cout << c1.real(); ------------------> cout << complex::real(&c1); -----------------------> non-static data members

cout << c2.real(); ------------------> cout << complex::real(&c2); -----------------------> non-static data members

static data members静态数据“仅有一份”

static member functions静态函数-------------->没有thispointer,所以静态函数只能处理静态数据

进一步补充,static:

class Account{

public:

static double m_rate;

static void set_rate(const double& x) {m_rate = x;} 静态函数没有thispointer所以只能调用静态数据

};

double Account::m_rate = 8.0;静态数据必须在class外面进行定义(定义获取内存)

int main(){

Account::set_rate(5.0); 调用static函数的方式有两种:

Account a; (1)通过object调用,通过对象调用

a.set_rate(7.0); (2)通过class name调用,通过类名调用

}

进一步补充,把ctors放在private中,把构造函数放在private中

class A{

public:

static A& getInstance(return a;) getInstance(return a;)外界可以通过a来获取对象

setup(){...}

private:

A(); 将A放在private里面,那么没有任何人可以创建A

A(const A& rhs);

static A a;

}

A::getInstance().setup();单例设计模式;通过调用函数来实现,调用自己

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

上述表例中,若没有自己则会造成浪费,例如static A a中, 若不需要创建则造成浪费。

class A{

public:

static A& getInstance();

setup() {...}

private:

A();

A(const A& rhs);

...

};

A& A::getInstance(){A::getInstance().setup();

static A a;

return a;

}

进一步补充:class template, 类模板

template <typename T>

class complex{

public:

complex(T r = 0, T i = 0) : re(r), im(i){}

complex& operator += (const complex&);

T real() const {return re;}

T imag() const {return im;}

private:

T re, im;

friend complex& _doapl(complex*, const complex&);

};

{

complex<double>c1(2.5, 1.5);

complex<int>c2(2, 6);

}

进一步补充:function template, 函数模板

template <class T>

inline

const T& min(const T& a, const T& b){

return b < a ? b : a;

}

类模板与函数模板的差别

1.

类模板在使用时,必须指定类型是什么?

函数模板不必明确指出,编译器会进行参数推倒。

进一步补充:namespace

namespace std{可以分为不同模块进行包装

...

}

using directive

#include <iostream.h>

using namespace std; 全部打开

int main(){

cin << ...;

cout << ...;

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。