C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计
“ 目录 C++语言程序设计 基本知识 编程技能 刨根问底 类和对象的定义 对象数组 this指针 构造函数 对象作为普通函数的参数与返回值 析构函数 面向对象程序设计 对象数组 对象作为普通函数的参数与返回值 对象指针和堆对象 this指针 复制构造函数 内部类和命名空间 C++语言程序设计
编程技能 b C++语言程序设计
在C++中,类是一个自定义的数据类型,对象是该数据类型的一个变量。 (二)对象作为普通函数的参数与返回值 在C++中,类是一个自定义的数据类型,对象是该数据类型的一个变量。 student stu; int i; 类类型也可以作为一个函数的参数类型和返回值类型 student f(student s) { …….. } C++语言程序设计
(二)对象作为普通函数的参数与返回值 类类型作为函数的参数类型时: 实参传递给形参自动调用复制构造函数 C++语言程序设计 class Tdate{ public: void Tdate (int,int,int); void Print(); private: int month; int day; int year; }; void someFunc(Tdate someday) { someday.print(); } int main() { Tdate s(2003,15,2); someFunc(s); …… C++语言程序设计
(二)对象作为普通函数的参数与返回值 类类型作为函数的返回类型时: return 返回对象时自动执行复制构造函数 C++语言程序设计 class Tdate{ public: void Tdate (int,int,int); void Print(); private: int month; int day; int year; }; Tdate someFunc(Tdate someday) { return someday; } int main() { Tdate s(2003,15,2); someFunc(s); …… C++语言程序设计
(二)对象作为普通函数的参数与返回值 类类型作为函数的返回类型时: return 返回对象时自动执行复制构造函数 需要注意的是,函数返回后直接初始化另一个对象时,仅执行一次复制构造函数 Tdate someFunc(Tdate someday) { return someday; } int main() { Tdate s(2003,15,2); Tdate t=someFunc(s); …… C++语言程序设计
类类型的指针或引用作为函数的参数类型或返回类型时: (二)对象作为普通函数的参数与返回值 类类型的指针或引用作为函数的参数类型或返回类型时: 由于传递的是指针,所以不会执行复制构造函数 Tdate & someFunc(Tdate & someday) { return someday; } int main() { Tdate s(2003,15,2); Tdate t=someFunc(s); …… Tdate * someFunc(Tdate * someday) { return someday; } int main() { Tdate s(2003,15,2); Tdate t = *someFunc(&s); …… C++语言程序设计
(三)对象指针和堆对象 对象相当于变量,所以可以定义对象指针或对象引用,或动态地从堆中申请空间来创建一个对象。 C++语言程序设计 Clock c; //在栈中分配Clock型存储空间 Clock* pc1=new Clock; //在堆中分配Clock型存储空间 Clock* pc2=&c; Clock &rc = *pc1 //创建对象的引用 C++语言程序设计
(三)对象指针和堆对象 使用对象指针访问对象的成员,要使用“->”运算符。语法形式为: 对象指针名->公有成员; class Clock { public: Clock(int H=0,int M=0,int S=0); //构造函数 void SetTime(int newH,int NewM,int newS); void ShowTime(); private: int Hour; int Minute; int Second; }; void main() { Clock* pmyclock=new Clock; pmyclock->SetTime(12, 5, 0); pmyclock->ShowTime(); delete pmyclock; } C++语言程序设计