14-1包含对象成员的类

包含对象成员的类

14.1.1 valarray类简介

在头文件valarray中,用于处理数值的类。

声明一个valarray对象

在标识符valarray后加上一对<>,中间写上所需处理的数据类型,后面补上对象名。

valarray<int> v1;			//创建一个int型的valarray对象
valarray<double> v2(5); //创建一个double型的长度为5的对象
valarray<int> v2(gpa,4); //创建一个int型的对象并导入gpa数组,长度为4

方法

operator[]()	//访问元素
size() //返回元素数
sum() //返回元素总和
max() //返回最大元素
min() //返回最小元素

14.1.2 Student类的设计

#pragma once

#include<iostream>
#include<string>
#include<valarray>
class Student
{
private:
typedef std::valarray<double> ArrayDb; //在类方法和友元函数中可以使用,外部不能使用
std::string name;
ArrayDb scores;
std::ostream & arr_out(std::ostream & os) const;
public:
Student() : name("Null Student"), scores(){}
explicit Student(const std::string & s) //关闭隐式转换
: name(s), scores(){}
explicit Student(int n) : name("Nully"), scores(n) {}
Student(const std::string & s, int n)
: name(s), scores(n){}
Student(const std::string & s, const ArrayDb & a)
: name(s), scores(a){}
Student(const char * str, const double * pd, int n)
: name(s), scores(pd, n){}
~Student(){}

double Average() const;
const std::string & Name() const;
double & operator[](int i);
double operator[](int i) const;

friend std::istream & operator>>(std::istream & is,
Student & stu);
friend std::istream & getline(std::istream & is,
Student & stu);
friend std::ostream & operator<<(std::ostream & os,
Student & stu);
}