C++基础知识:成员函数、对象拷贝、私有成员
程序员文章站
2022-07-02 17:11:53
一、综述 类是我们自己定义的数据类型(新类型) 设计类时要考虑的角度: (1)站在设计和实现者的角度来考虑 (2)站在使用者的角度来考虑 (3)父类,子类 二、类基础 (1)一个类就是一个用户自己定义的数据类型,把类可以想象为一个命名空间,包着一堆东西(成员函数,成员变量)。 (2)一个类的构成:成 ......
一、综述
类是我们自己定义的数据类型(新类型)
设计类时要考虑的角度:
(1)站在设计和实现者的角度来考虑
(2)站在使用者的角度来考虑
(3)父类,子类
二、类基础
(1)一个类就是一个用户自己定义的数据类型,把类可以想象为一个命名空间,包着一堆东西(成员函数,成员变量)。
(2)一个类的构成:成员变量,成员函数(有许多特殊的成员函数)。
(3)我们访问类成员时,我们就用对象名.成员名来访问成员
如果是指向对象的指针,我们就用指针名->成员名来访问成员。
class student { int number; char name[100]; } student someone; // 定义类的对象 someone.number = 1000; student *someone1 = &someone; someone->number = 1005; cout << someone1->number << endl;
(4)public成员提供类的接口,暴露给外接,供外界调用;private成员提供各种实现类的细节方法,但不暴露给使用者,外界无法访问这些成员。
(5)struct是成员默认为public的class; struct a{….}
(5)class是成员默认为private(私有)class a{….}
三、成员函数
class time { public: int hour; // 小时 int minute; // 分钟 int second; // 秒钟 void inittime(int tmphour, int tmpminute ,int tmpsecond) { hour = tmphour; minute = tmpminute; second = tmpsecond; } } int main() { time mytime; // 类对象 mytime .inittime(mytime,11,14,5); cout << mytime.hour << endl; cout << mytime.minute << endl; cout << mytime.second << endl; return 0; }
当做工程来写
//time.h #ifndef __mytime__ #define __mytine__ class time { public: int hour; // 小时 int minute; // 分钟 int second; // 秒钟 void inittime(int tmphour, int tmpminute ,int tmpsecond); }
#endif
//time.cpp #include “tiem.h” // 成员函数的实现 // 其中::称为作用于运算符,表示inittime这个函数属于time类 void time::inittime(int tmphour, int tmpminute ,int tmpsecond) { hour = tmphour; // 成员函数中可以直接使用成员变量名 minute = tmpminute; second = tmpsecond; }
入口函数文件
#include “time.h” int main() { time mytime; // 类对象 mytime .inittime(mytime,11,14,5); cout << mytime.hour << endl; cout << mytime.minute << endl; cout << mytime.second << endl; return 0; }
四、对象的拷贝
对象本身是可以拷贝的
默认情况下,类对象的拷贝,是每个成员变量的逐个拷贝。
如果在类中定义适当的赋值运算符就能够控制对象的拷贝行为。
time mytime; mytime.hour = 12; mytime.minute = 15; mytime.second = 5; time mytime2 = mytime; // 定义新对象并初始化 time mytime3(mytime); time mytime4 {mytime}; time mytime5 = {mytime}; mytime5.hour = 8;
五、私有成员
class time { private: int millsecond; // 毫秒 public: int hour; // 小时 int minute; // 分钟 int second; // 秒钟 void inittime(int tmphour, int tmpminute ,int tmpsecond) { hour = tmphour; minute = tmpminute; second = tmpsecond; } void initmilltime(int mls) { millsecond = mls; // 成员函数可以访问成员变量,不管成员是否私有 } } time mytime; //mytime. millsecond = 1000; // 出错,无法访问 mytime.initmilltime(1000); // 私有成员变量的值可以通过公有的成员变量来获取与设置
推荐阅读