private:
int m; // 分母 };
(5)定义一个类包含一个整型数的指针变量,在构造函数中用new分配10各整型数的内存空间,在析构函数中用delete释放内存空间,并编写给内存空间赋值和输出函数。
(6)编写类String 的构造函数、析构函数
已知类String 的原型为: class String {
public:
String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 private:
char *m_data; // 用于保存字符串 };
请编写String 的上述3 个函数。并编写一个主函数,在主函数中对所编写的成员函数进行测试。
(7)定义和实现类Array。数据成员有包含了10个元素的数组,成员函数GetData,有一个整形数参数i,函数返回下标为i的元素值,对一个数组元素的引用,成员函数Print打印出数组的值。构造函数将数据成员的所有数组元素初始化为0。还有一个input成员函数为数组赋值。
(8) 定义类Point.要求定义类对象时,可以有这样的定义语句: Point p1(1,2),p2(p1); #include
{
x=a;y=b; }
void fun (Point &p); void fun (Point * p);
private:
int n; // 分子
int x,y; };
void fun (Point &p) {
x=p.x ; y=p.y ;
cout<< \}
void Point:: fun (Point *p) {
x=p->x ; y=p->y ;
cout<< \ }
Void main() {
Point p(1,2),q(3,4) ; p.fun(q) ; q.fun(&q) ; }
改正程序中小的错误,给出程序运行的结果,并对程序进行分析。
3、思考题:
结合编程实践回答下列的问题。 (1) (2) (3)
结合第一个例子,说明什么是类?什么是对象?你是如何理解类和对象的? 面向对象的程序设计与结构化程序设计有何不同? 拷贝构造函数那些情况下会被调用,分别给出例子?
实验3 this指针、常量和静态成员和友元函数的使用
1、
实验目的和要求:
(1) 掌握显式使用this指针的方法 (2) 掌握静态数据成员的意义及使用方法
(3) 掌握常量数据成员和常量成员函数的意义和使用方法 (4) 掌握友元函数和友元类的使用方法
2、 实验内容:
(1)有如下类的定义。类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。(有两种方法即不用this 指针和用this指针)
#include
Myclass (int a,int b) { x=a;y=b;} Void copy(Myclass & my); void print( )
{ cout<<“x=”< void main() { Myclass my(10,20),t(30,40); my.print( ); my. Copy(t); my.print( ); } (2)设计一个类,实现两个复数的四则运算。实现加减乘除功能的函数用友元函数实现。 (3)分析下面程序,给出横线部分的语句,并分析程序的输出,和m_count的功能。 #include static int m_counter; public: A(); ~A(); static void display(); } —————————— //将m_counter初始化为0; A::A() { m_counter++; } A::~A() { m_counter--; } void A::display() { cout<<”There are:”< int main() { A a1; A a2; A a3; A::display(); a1.display(); } (4)商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,单价不一样,因此商店需要记录下目前库存的货物的总重量和总价值。编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。 (本题目主要练习静态数据成员的使用,定义私有变量存每件货物的价格和重量,用静态数据成员存货物的总重量和总价钱,定义构造函数和析构函数,当定义新的对象完成初始化的功能和删除对象时,从总重量和总价钱中减去对象的重量和价格) (5) 静态成员练习 1)。编写一个类Node,声明一个数据成员member和已经静态成员count,另构造函数初始化数据成员,并把静态数据成员加1,另析构函数把静态数据成员减1。 2)。在1)的基础上编写应用程序,创建3个对象,然后显示他们的数据成员和静态成员,再析构每个对象,并显示他们对静态数据成员的影响。 3)。修改2),让静态成员函数访问静态数据成员,并让静态数据成员是私有的。 (6)个类分别为整型数集合类和实型数集合数类。将缺少的内容补齐。并完成要求的其它内容。 如: class Intset { private: int num[3]; public: Intset ( int x,int y, int z) {//添加初始化内容} void print( ) { //打印数据} }; class floatset { private: float num[3]; public: floatset ( float x,float y, float z) { //添加初始化内容 } void print( ) { //打印数据 } };