《C++面向对象程序设计》教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章类和对象3.2 构造函数与析构函数
例:点类 Point
class Point
{
private:
int x,y;
public:
Point() {};
Point(int xx, int yy) { x=xx; y=yy; }
Point(Point &p) { x=p.x; y=p.y; }
int GetX() const { return x; }
int GetY() const { return y; }
void SetXY(int xx, int yy) { x=xx; y=yy; } void Show();
};
void Point::Show()
{ cout<<"X: "< } 例:人类 Person class Person { protected: char *name; int age; char sex; public: Person(char *n, int a, char s); Person() { name = 0; age = 0; sex = ' '; } Person( Person &p ); ~Person() { delete[] name; } void SetName(char *n); void SetAge(int a){ age = a; } void SetSex(int s){ sex = s; } char *GetName() const { return name; } int GetAge() const { return age; } char GetSex() const { return sex; } void Show(); }; #include "person.h" #include using namespace std; Person::Person(char *n, int a, char s) { name = new char[strlen(n)+1]; strcpy(name,n); age = a; sex = s; } Person::Person(Person &p) { name = new char[strlen()+1]; strcpy(name,); age = p.age; sex = p.sex; } void Person::SetName(char *n) { delete[] name; name = new char[strlen(n)+1]; strcpy(name,n); } void Person::Show() { cout<<"Name: "< 3.3 对象数组与对象指针 1、对象数组 所谓对象数组是指每一数组元素都是对象的数组。 2、对象指针 声明对象指针的一般语法形式为:类名* 对象指针名。 当用指向对象的指针来访问对象成员时,要用“->”操作符。 3、this指针 C++为成员函数提供了一个名字为this的指针,这个指针称为自引用指针。每当通过一个对象调用一个成员函数时,系统就自动把这个this指针指向该对象。因此使用的数据成员就是该对象的数据成员。 3.4 向函数传递对象 1、使用对象作为函数参数 2、使用对象指针作为函数参数 3、使用对象引用作为函数参数 3.5 静态成员 1、静态数据成员 在一个类中,若将一个数据成员说明为static,这种成员称为静态数据成员。与一般的数据成员不同,无论建立多少个类的对象,都只有一个静态数据的拷贝。从而实现了同一个类的不同对象之间的数据共享。 定义静态数据成员的格式如下: static 数据类型数据成员名; 静态数据成员在该类定义之外被初始化。访问静态数据成员可以通过对象或指针来访问,也可以通过类名::来访问。 2、静态成员函数 定义静态成员函数的格式如下: static 返回类型静态成员函数名(参数表); 与静态数据成员类似,调用公有静态成员函数的一般格式有如下几种: 类名::静态成员函数名(实参表) 对象. 静态成员函数名(实参表) 对象指针->静态成员函数名(实参表) 例:点类 Point(演示静态成员) class Point { private: int x,y; static int count; public: Point(int xx=0, int yy=0) { x=xx; y=yy; count++;} Point(Point &p) { x=p.x; y=p.y; count++;} int GetX() const { return x; } int GetY() const { return y; } void SetXY(int xx, int yy) { x=xx; y=yy; } static int GetCount() { return count; } }; int Point::count=0; int main() { Point a(100,200), b; cout< cout< } 3.6 友元 1、友元函数 友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有对象的成员,包括私有成员、保护成员和公有成员。 2、友元成员 一个类的成员函数也可以作为另一个类的友元,这种成员函数不仅可以访问自己所在类对象中的所有成员,还可以访问friend声明语句所在类对象中的所有成员。 3、友元类 一个类也可以作为另一个类的友元。