莆田网站关键词优化,网站首页 关键词,网站数据库做好了 怎么做网页,公司宣传册模板图片一、实验目的
1. 理解类的组合定义、说明与使用
2. 参数化列表的使用
3. 组合类的特例——string类
二、实验任务
重点:掌握组合类的定义与实现,丰富类的数据成员与成员函数,拓展其功能。 阅读分析、完善程序。下面是一个组合类 Teacher的定义,数据成员包括代表姓名的…一、实验目的
1. 理解类的组合定义、说明与使用
2. 参数化列表的使用
3. 组合类的特例——string类
二、实验任务
重点:掌握组合类的定义与实现,丰富类的数据成员与成员函数,拓展其功能。
阅读分析、完善程序。下面是一个组合类 Teacher的定义,数据成员包括代表姓名的字符串类对象name,代表学号的常字符串指针,代表生日的Date类对象;成员函数包括无参、有参、复制构造函数,以及信息输出函数,现要求:(1)思考并实验验证程序,回答程序处标注的思考题?
(2)查阅资料回答:组合类对象不用参数化列表方式初始化是否可以?常数据成员,常成员函数的特点?
在C++中,组合类对象可以使用默认构造函数进行初始化,不一定需要参数化列表方式。常数据成员是指在类中声明为const的成员变量,它们的值不能在对象生命周期内被修改。常成员函数是指在类中声明为const的成员函数,它们保证不会修改对象的状态,只能访问对象的常数据成员和非常成员函数。常数据成员和常成员函数可以提高程序的可读性和安全性,尤其是在多线程或并发编程中。 (3)查阅资料回答:静态变量、静态成员函数的特点?
静态变量和静态成员函数的特点包括:
1.与类相关而不是与对象相关。
2.可以通过类名直接访问。
3.不需要类的实例即可使用。
4.静态变量在程序生命周期内只创建一次,本质上是全局变量,因此需要小心使用以避免命名冲突。
5.静态成员函数不能访问非静态成员,也不能使用this指针,因为它们没有隐式的对象参数。
(4)查阅资料回答:string类的使用特点?
string类的使用特点包括:
1.动态内存管理:string类自动处理字符串的内存分配和释放,避免了手动管理内存带来的问题。
2.支持各种操作:string类支持大量的字符串操作,包括连接、比较、查找、替换等,方便了程序员的开发工作。
3.可读性强:string类代码具有可读性强的特点,能够很好地表达程序员的意图,降低代码出错的概率。
4.高效性:尽管string类是动态内存管理,但通过优秀的实现和算法,它可以非常高效地执行大多数操作。
5.与C风格字符串兼容:string类可以轻松地与C风格字符串进行转换和互操作,这使得在C++程序中使用已有的C代码更加容易。 #include iostream
#include string
using namespace std;
class Date
{private: int y, m, d; const int a; static int c;
public: Date():a(0) //常变量使用初始化列表方式初始化 { y = m = d = 0; } Date(int yy, int mm, int dd) : y(yy),a(0)//普通常变量也可以使用初始化列表方式初始化 { m = mm; d = dd; } Date(Date dt) :y(dt.y), a(dt.a) { m = dt.m; d = dt.d; } void output() { y = d; cout y ":" m ":" d endl; cout "a="a endl; } void output()const { y = d; //思考1:常成员函数是否可以改变变量的值? cout "a=" a endl; cout y ":" m ":" d endl; }
};
int Date::c = 0; //静态数据成员初始化
class Teacher //组合类
{
private: string name; const char* str; Date bir;
public: Teacher(string n,const char* s,Date b):bir(b) //思考2:第二个形参是否可以去掉const ? { name=n; str =s; } Teacher() //思考3:无参构造函数中内嵌对象bir如何实现初始化 ? { name = " "; str = " "; } Teacher(Teacher t) :bir(t.bir) { name =t.name; str =t.str; } string getname() { return name; } const char* getstr() //思考4:此函数是常成员函数吗 ? { return str; }