C++基础知识:成员函数、对象拷贝、私有成员
一、综述
类是我们自己定义的数据类型(新类型)
设计类时要考虑的角度:
(1)站在设计和实现者的角度来考虑
(2)站在使用者的角度来考虑
(3)父类,子类
二、类基础
(1)一个类就是一个用户自己定义的数据类型,把类可以想象为一个命名空间,包着一堆东西(成员函数,成员变量)。
(2)一个类的构成:成员变量,成员函数(有许多特殊的成员函数)。
(3)我们访问类成员时,我们就用对象名.成员名来访问成员
如果是指向对象的指针,我们就用指针名->成员名来访问成员。
class student
{
int number;
char name[];
} student someone; // 定义类的对象
someone.number = ;
student *someone1 = &someone;
someone->number = ;
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,,,);
cout << MyTime.Hour << endl;
cout << MyTime.Minute << endl;
cout << MyTime.Second << endl;
return ;
}
当做工程来写
//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,,,);
cout << MyTime.Hour << endl;
cout << MyTime.Minute << endl;
cout << MyTime.Second << endl; return ;
}
四、对象的拷贝
对象本身是可以拷贝的
默认情况下,类对象的拷贝,是每个成员变量的逐个拷贝。
如果在类中定义适当的赋值运算符就能够控制对象的拷贝行为。
Time myTime;
myTime.Hour = ;
myTime.Minute = ;
myTime.Second = ; Time myTime2 = myTime; // 定义新对象并初始化
Time myTime3(myTime);
Time myTime4 {myTime};
Time myTime5 = {myTime};
myTime5.Hour = ;
五、私有成员
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(); // 私有成员变量的值可以通过公有的成员变量来获取与设置
C++基础知识:成员函数、对象拷贝、私有成员的更多相关文章
- C++之在类内部访问对象的私有成员
一.引言 今天看项目里的一段代码发现,竟然可以再类的成员函数中访问该类的对象的私有成员.感觉不可思议. 自己写的实例代码: #include <iostream> using namesp ...
- 类1(this指针/const成员函数/类作用域/外部成员函数/返回this对象的函数)
假设我们要设计一个包含以下操作的 Sales_data 类: 1.一个 isbn 成员函数,用于返回对象的 book_no 成员变量 2.一个 combine 成员函数,用于将一个 Sales_dat ...
- 通过指针访问C++对象的私有成员
C++对象的私有成员是禁止类外的访问的.但是我们仍然可以通过指针访问C++对象的私有成员. #include <iostream> using namespace std; class A ...
- python基础知识13---函数对象、函数嵌套、名称空间与作用域、装饰器
阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 ...
- php面试笔记(5)-php基础知识-自定义函数及内部函数考点
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...
- [C/C++基础知识] main函数的参数argc和argv
该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助.一.main()函数参数通常我们在写主函数时都是void ...
- Python基础知识:函数
1.定义函数和调用函数 #定义函数def def greet_user(username): '''简单的问候语''' print('Hello,%s!'%username) greet_user(' ...
- Js基础知识7-Es6新增对象Map和set数据结构
前言 JavaScript中对象的本质是键值对的集合,ES5中的数据结构,主要是用Array和Object,但是键只能是字符串.为了弥补这种缺憾,ES6带来了一种新的数据结构Map. Map也是键值对 ...
- Java基础知识3-类和对象(1)
面向过程和面向对象的区别 面向过程(结构化程序设计) 实际上是一个面向操作过程,首先设计一系列过程(算法)来求解问题(操作数据),然后再考虑存储数据的方式(组织数据).即程序=算法\+数据结构.对应典 ...
- ES6基础知识(Promise 对象)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 接雨水12 · Trapping Rain Water12
[抄题]: Given n non-negative integers representing an elevation map where the width of each bar is 1, ...
- 利率计算v4.0--测试--软件工程
利率计算v4.0--测试 package Test; import Model.Interest; import Service.CompoundInterestService; import Ser ...
- npm 更改为淘宝镜像的方法
1.命令行临时使用指定镜像(淘宝) npm --registry https://registry.npm.taobao.org install express 2.命令行永久更改使用指定镜像(淘宝) ...
- Java 设计模式系列(五)原型模式
Java 设计模式系列(五)原型模式 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是选型模式的用意. 一.原型模 ...
- Gym 100792C Colder-Hotter (三分)
题意:系统有一个点对,让你去猜,每次你猜一个,如果这个数和系统里的那个点距离比上一个你猜的近,那么返回1,否则返回0,第一次猜一定返回0,在不超过500次的情况下,猜出正确答案. 析:是一个简单的三分 ...
- swift的可选值(optional)
苹果那文档写了一大堆也没有好好的写一下可选值(optional)这个东西.就是在有一个“Optional Chaining”的章节,但是也不是很充分的说明.最后找了半天在“the basics”里墨迹 ...
- 自己写一个图片按钮(XAML)
有时需要用三张图片(正常状态,鼠标移上,鼠标按下)来作为一个按钮的样式,虽然这种做法不好,应该用矢量的方式制作样式,但有的时候还是需要这样做的. 每次都修改按钮的样式来实现这个做法,既麻烦又会生成大段 ...
- EJB3.0 EJB开发消息驱动bean
(7)EJB3.0 EJB开发消息驱动bean JMS 一: Java消息服务(Java Message Service) 二:jms中的消息 消息传递系统的中心就是消息.一条 Message 由三个 ...
- 在TFS 2013中选择一周中的工作日,例如增加星期日
默认情况下,TFS在迭代视图中不计算周末的工作,如果出现调休的情况,则周末的工作日不会出现在迭代视图中,也不会参与燃尽图的计算.但是可以调整团队一周中的工作日,从而修正迭代计算方式,修改的方式参考下图 ...
- svn数据的备份
svnadmin dump -r 0:HEAD [项目名称]>[存储的文件名].dump