c++第9章关于类和对象的进一步讨论教程.pptVIP

  • 2
  • 0
  • 约1.35万字
  • 约 84页
  • 2018-04-23 发布于广东
  • 举报

c++第9章关于类和对象的进一步讨论教程.ppt

对象的复制和对象的赋值 Student s1(1,zhang); Student s2(s1); //对象复制 Student s3=s2; //对象复制 Student s4; s4=s1; //对象赋值 对象的复制和对象的赋值在概念上和语法上是不同的。 对象的赋值是对一个已经存在的对象赋值,将等号右边对象数据成员的值赋给等号左边对象的相应成员。 对象的复制则是调用对象复制函数。 运行下列程序,分析输出结果 #include iostream using namespace std; class Student { int sno; string name; public: Student(); Student(int,string); Student(const Student); void setSno(int); void showInfo(); }; Student::Student() { cout调用了无参构造函数。endl; sno=0; name=no name; } Student::Student(int s,string n) { cout调用了有参构造函数。endl; sno=s; name=n; } Student::Student(const Student s) { cout调用了复制构造函数。endl; sno=s.sno; name=s.name; } void Student::showInfo() { coutsno: snoendl; coutname: nameendl; } int main( ) { Student s1(1,wang); s1.showInfo(); Student s2(s1); s2.showInfo(); Student s3=s2; s3.showInfo(); Student s4; s4=s1; s4.showInfo(); } 问题: class Student { int sno; char name[10]; public: Student(); Student(int,char [ ]); Student(const Student); void setSno(int); void showInfo(); }; 这些构造函数如何定义? 9.8 静态成员 静态类成员是由关键字static修饰说明的类成员。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一个存于公用内存中。 9.8.1 静态数据成员 在类定义中,用关键字static修饰的数据成员为静态数据成员,该类产生的所有对象共享由系统为静态成员分配的一块存储空间,而这块存储空间是在编译时分配的,在定义对象时不再为静态成员分配空间。静态数据实际上是该类所有对象所共有的,它更像面向过程程序设计的全局变量,可提供同一类所有对象之间信息交换的捷径。正因为静态数据成员不属于类的某一特定对象,而是属于整个类的,所以使用时可用以下格式: 类名::静态数据成员名 class test { private: static int count; //声明静态数据成员 public: test( ) { ++count; cout对象数量=countendl; } ~test( ) { --count; cout对象数量=countendl; } }; int test::count=0; //定义静态数据成员 int main( ) { test a[3]; } 输出结果: 对象数量=1 对象数量=2 对象数量=3 对象数量=2 对象数量=1 对象数量=0 注意: 静态数据成员在程序一开始运行时就必须存在(分配空间),故不能在任何函数内定义,也不能在类的声明中定义(只能声明数据成员),也不能在头文件中类声明的外部定义。 静态数据成员是类的一部分,其定义是类定义的一部分,一般将其放在类的内部实现部分中定义。 9.8.2 静态成员函数 函数成员说明为静态,同样与该类的不同对象无关。静态函数成员的调用在对象之外可以采用下面的方式: 类名::函数名( ) #includeiostream using namespace std; class test { private: st

文档评论(0)

1亿VIP精品文档

相关文档