C++面向对象编程之类模板、函数模板等一些补充

1.static数据 和 static函数:

对于 非static函数 在内存中只有一份,当类对象调用时,其实会有该对象的this pointer传进去,那个函数就知道要对那个对象进行操作;

static 数据 和 static函数 在内存中也是只有一份,一般 static数据 使用是在该类所有对象都有的同一个东西;

static函数 没有this pointer,它是用来对 static数据 进行一些操作的函数;

2.把构造函数放在private部分的情况:

这样的情况是想:希望这个类只会产生一个对象,不想让外界可以创建该类对象;

这个对象用static 创建,用一个在public的static函数,函数里创建这个唯一的 static对象,这样只有在调用这个 static函数后才会生产这个唯一的对象,其他时刻就没这个对象,也不会占用空间。

 

 

3.cout 是继承 ostream 的一个类,ostream里重载了多种类型的 << ,所以cout 才可以直接 cout << ...;

4.class template类模板:

写时在类前template<typename T>, 使用时 "类名称<绑定的数据类型> 对象名称"

5.function template,在函数前:template<class T> 或者 template<typename T>,一般class 和 typename 是相通的;

使用时编译器会对function template进行参数推到,不需要像class template那样要绑定数据类型;

6.namesapce,"namesapce std"里有很多东西被包含进这个std里了,std是这个空间的名字,像cout、cin都在std里,有以下几种写法:

1)前面using namespace std;后,后面直接用cin >> ... 或者 cout << ...

2)前面using std::cout,后面直接cout << ...,但是使用cin时要 std::cin >> 

3)用时直接std::cin >> ,std::cout << 

 

posted @ 2022-05-04 20:47  acwarming  阅读(35)  评论(0编辑  收藏  举报