提问 include <iostream. h> 指出该程序中存在的错误并改正 class Rectangle t private int areao int length=10 return length* width int width 20 public void maino void Set(int len, int wid) i Rectangle aa, bb int area( aa. Set(20,30); cout<<“面积是:”<< aa area0<<end!; void set(int len, int wid) bb length =40 i length=len bb width= 50: width wid cu<<“面积是:”<<bb.area0<endl 编程设计一个日期类,具体要求如下:∥/t5-1cpp0 (1)日期类名为Date; (2)设置日期 (3)输出明天日期 (4)返回年份
提问: 编程设计一个日期类,具体要求如下:// t5-1.cpp (1)日期类名为Date; (2)设置日期 (3)输出明天日期 (4)返回年份 #include <iostream.h> class Rectangle { private: int length=10; int width = 20; public: void Set(int len, int wid); int area(); } void Set(int len, int wid) { length = len; width = wid; } int area() { return length * width; } void main() { Rectangle aa, bb; aa.Set(20, 30); cout << “面积是:” << aa.area() << endl; bb.length = 40; bb.width = 50; cout << “面积是:” << bb.area() << endl; } 指出该程序中存在的错误并改正
52构造數和析构画飘 定义对象时,按现在已学过的知识无法进行初 始化,即无法对数据成员进行赋初值的过程。数据 成员,从封装的目的出发,应该多为私有的,要对 它们进行赋值,看来必须用一个公有函数来进行, 在圆类定义中 Setradius就是这样一个函数。但对象 的初始化,要求该函数应该在且仅在定义对象时自 动执行一次,否则就不是初始化了。显然 Setradius 不能满足这样的要求。在C++程序设计语言中,每个 对象在创建时候都会自动调用一个初始化函数,并 且只能调用一次,该函数称为构造函数。 <心
5.2 构造函数和析构函数 定义对象时,按现在已学过的知识无法进行初 始化,即无法对数据成员进行赋初值的过程。数据 成员,从封装的目的出发,应该多为私有的,要对 它们进行赋值,看来必须用一个公有函数来进行, 在圆类定义中SetRadius就是这样一个函数。但对象 的初始化,要求该函数应该在且仅在定义对象时自 动执行一次,否则就不是初始化了。显然SetRadius 不能满足这样的要求。在C++程序设计语言中,每个 对象在创建时候都会自动调用一个初始化函数,并 且只能调用一次,该函数称为构造函数
52构造菡飘和析构画数 5.2.1构造函数的定义与使用 5.2.2析构函数的定义 5.2.3复制构造函数的定义 5.2.4成员对象与构造函数 5.2.5构造和析构函数的调用 <心
5.2 构造函数和析构函数 5. 2. 1 构造函数的定义与使用 5. 2. 3 复制构造函数的定义 5. 2. 4 成员对象与构造函数 5. 2. 2 析构函数的定义 5. 2. 5 构造和析构函数的调用
521构造画数的定义与使用 对于对象的初始化,采用构造函数( constructor) 当需要对对象进行初始化时,总是编写一个或一组构造函数。 构造函数是特殊的公有成员函数,其特征如下: 1.函数名与类名相同。 2.构造函数无函数返回类型说明。注意是没有而不是 void,即什么也不写,也不可写void!实际上构造函数有隐 含的返回值,返回的就是构造函数所创建的对象。 3.在程序运行时,当新的对象被建立,该对象所属的类 的构造函数自动被调用,在该对象生存期中也只调用这一次。 4.构造函数可以重载。严格地讲,说明中可以有多个构 造函数,它们由不同的参数表区分,系统在自动调用时按 般函数重载的规则选一个执行。 <心
对于对象的初始化,采用构造函数(constructor)。 当需要对对象进行初始化时,总是编写一个或一组构造函数。 构造函数是特殊的公有成员函数,其特征如下: 1. 函数名与类名相同。 2. 构造函数无函数返回类型说明。注意是没有而不是 void,即什么也不写,也不可写void!实际上构造函数有隐 含的返回值,返回的就是构造函数所创建的对象。 3. 在程序运行时,当新的对象被建立,该对象所属的类 的构造函数自动被调用,在该对象生存期中也只调用这一次。 4. 构造函数可以重载。严格地讲,说明中可以有多个构 造函数,它们由不同的参数表区分,系统在自动调用时按一 般函数重载的规则选一个执行。 5.2.1 构造函数的定义与使用
521构造扬数的定义与使用 5.构造函数可以在类中定义,也可以在类外定义。 6.如果类说明中没有给出构造函数,则C++编译器自 动给出一个缺省的构造函数: 类名(vod) { 但只要我们定义了一个构造函数,系统就不会自动生成 缺省的构造函数。缺省的构造函数,也可以由程序员自己来 编,只要构造函数是无参的或者只要各参数均有缺省值的, C++编译器都认为是缺省的构造函数,并且缺省的构造函数 只能有一个。 如果对象的数据成员全为公有的,在缺省构造函数方式 下,也可以在对象名后加“="加“{},在花括号中顺序填 入全体数据成员的初始值
5.2.1 构造函数的定义与使用 5. 构造函数可以在类中定义,也可以在类外定义。 6. 如果类说明中没有给出构造函数,则C++编译器自 动给出一个缺省的构造函数: 类名(void) { } 但只要我们定义了一个构造函数,系统就不会自动生成 缺省的构造函数。缺省的构造函数,也可以由程序员自己来 编,只要构造函数是无参的或者只要各参数均有缺省值的, C++编译器都认为是缺省的构造函数,并且缺省的构造函数 只能有一个 。 如果对象的数据成员全为公有的,在缺省构造函数方式 下,也可以在对象名后加“=”加“{}”,在花括号中顺序填 入全体数据成员的初始值