C++学习笔记
来源:互联网 发布:铃声制作软件 编辑:程序博客网 时间:2024/05/02 04:20
我在鸡啄米的网站上学习C++编程入门系列之十六(类与对象:类模板)
原帖网址在这里:http://www.jizhuomi.com/software/55.html
里面提到了这样一个概念:类模板的构造函数
我没有看懂
于是我搜集了一些代码 放在下面
1. 模板类构造函数放在外面
#include "stdafx.h"#include <iostream>using namespace std; #include <stdio.h>template <class T> //模板类声明开始class abc{public: abc(T ab){m_abc=ab;} //构造函数 T get(){return m_abc;}private: T m_abc; //数据是私有的}; //模板类声明结束void main() //main函数{ abc<int> a(123); printf("%d\n",a.get()); system("pause");}这里就是先声明了一个模板类叫做T 但是你也不知道这个T以后会是什么
然后又声明了一个类叫做abc
那么最后在main函数中就声明了一个变量叫做 a
a的类型是abc 但是同时又指定了类型是abc中的int 同时初始化为123
最后打印abc类中get函数的返回值 (123)
2. 模板类构造函数放在里面
#include "stdafx.h"#include <iostream>using namespace std;template <class T> class abc{public: abc(T ab); T get();private: T m_abc;};template <class T> abc<T>::abc(T ab):m_abc(0){ m_abc=ab;}template <class T> T abc<T>::get(){ return m_abc;}void main(){ abc<int> a(123); printf("%d\n",a.get()); system("pause");}观察这两个,我们可以发现不同之处在于,如果要在类外定义构造(成员)函数,那么一般要遵循这样的方法:
对于构造函数,需要遵循组合类构造函数定义(注意不是声明)的一般形式:
类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表),...
{
类的初始化
}
比如这里的
abc<T>::abc(T ab):m_abc(0)abc就是类名 只不过是加入了可能的模板类T
中间的是这个构造函数的形参表 类型是T 名称是ab
最后是内前对象m_abc 初始化为0 (初始化为任何一个数字都是可以的,应该是)
对于成员函数 就只需要遵循一般的规矩即可
返回值 类 函数名称(变量表)
所以
T abc<T>::get()
之所以会出现这种不同 就是因为构造函数不允许有返回类型
又尝试了一下 这样也是可以的
abc<T>::abc(T ab)//构造函数
abc<T>::get() //成员函数
这样看他俩就是一样的了!
0 0
- C++/C学习笔记
- 【C/C++】STL学习笔记
- C/C学习笔记/导言
- C/C学习笔记/结构
- 【c/c++】学习笔记1
- C学习笔记1
- TPC-C学习笔记
- c语言学习笔记
- C语言学习笔记
- C语言学习笔记
- 学习笔记之c
- C#-学习笔记
- Objective-C学习笔记
- C++PRIMER学习笔记
- C学习笔记
- C 学习笔记
- C/C++学习笔记
- 1.C学习笔记
- linux服务器上生成CSR和KEY
- C# 运算符重载
- 算法导论(第三版) 第二章思考题
- Buildings
- 《C语言及程序设计》实践项目——函数起步
- C++学习笔记
- Linux下查看文件常用命令—cat,more,less,head,tail,od,file
- linux下生成core dump文件方法及设置
- vs2008下载地址大全
- 可复制文字的Label
- CentOS 6 安装 OpenCV 2
- 平衡树 算法摘记
- NOSQL数据模型和CAP原理
- 解决运行wamp提示“MSVCR110.dll”丢失(win7 x64)