欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++模板编程、单重继承、多重继承格式及构造函数值传递、运算符重载等难点讲解

程序员文章站 2022-07-07 22:37:06
1、单重继承、多重继承格式及构造函数值传递 2、STL常用输入输出流及使用方法。 3、运算符重载。 4、C++模板编程。 1、单重继承、多重继承格式及构造函数值传递 一、...

1、单重继承、多重继承格式及构造函数值传递

2、STL常用输入输出流及使用方法。

3、运算符重载。

4、C++模板编程

1、单重继承、多重继承格式及构造函数值传递

一、单重继承

class 派生类名: public 基类名

{

// 基类构造值传递格式1

构造函数(基类参数1,基类参数2,本类参数1,本类参数2,...):基类名( 基类参数1, 基类参数2 )

{

本类数据成员1 = 本类参数1;

本类数据成员2= 本类参数2;

}

// 基类构造值传递格式2

构造函数(基参1,基参2,本参1,本参2,...):基类名(基参1,基参2),本类数据成员1(本参1),本类数据成员2(本参2)

{

}

数据成员和成员函数声明及定义;

};

二、多重继承格式

class 派生类名: public 基类名1, public 基类名2,...

{

构造函数(基类参数1,基类参数2,本类参数1,...):基类名1(基类参数1),基类名2(基类参数2)

{

本类数据成员1 = 本类参数1;

.........

.........

}

// 基类构造值传递格式2

构造函数(基参1,基参2,本参1,本参2,...):

基类名1(基参1),

基类名2(基参2),

本类数据成员1(本参1),

本类数据成员2(本参2)

{

}

数据成员和成员函数声明;

};

2、STL常用输入输出流及使用方法。

文件输入输出流

C++对文件的读写使用的是ifstream、ofstream和fstream流类,同样是依照“打开-->读写-->关闭”原语进行操作。文件读写所用到的很多常数都在基类ios中被定义出来。ifstream类只用于读取文件数据,ofstream类只用于写入数据到文件,fstream则可用于读取和写入文件的数据。

ios::in 以读取方式打开文件

ios::out 以写入方式打开文件

ios::app 每次写入数据时,先将文件指针移到文件尾,以追加数据到尾部

ios::ate 仅初始时将文件指针移到文件尾,仍可在任意位置写入数据

ios::trunc 写入数据前,先删除文件原有内容(清空文件),当文件不存在时会创建文件

ios::binary 以二进制方式打开文件,不作任何字符转换.

std::cout << "this id is" << i << std::endl;

std::cin >> i >> f;

3、运算符重载

CMyTime& operator+(const CMyTime &obj) const; //重载加法

{ return *this }

CMyTime& operator-(const CMyTime &obj) const; //重载减法

{ return *this }

CMyTime& operator*(double n) const; //重载乘法

{ return *this }

4、函数模板(function template)和类模板(class template)

// 函数模板

template

bool equivalent( const T& a, const T& b ) {

return ! ( a < b ) && !( b < a );

}

// 类模板

template // 默认参数

class bignumber {

T _v;

public:

bignumber( T a ) : _v( a ) { }

inline bool operator<( const bignumber& b ) const; // 等价于 (const bignumber& b)

};

// 在类模板外实现成员函数

template

bool bignumber::operator<(const bignumber& b) const{

return _v < b._v;

}

int main()

{

bignumber<> a(1), b(1); // 使用默认参数,"<>"不能省略

std::cout << equivalent(a, b) << '\n'; // 函数模板参数自动推导

std::cout << equivalent(1, 2) << '\n';

std::cin.get(); return 0;

}