3、类与对象下

类里面的成员函数被调用时,都是隐藏着this指针,而类外的函数没有this指针。


再谈构造函数:

初始化列表:类成员变量定义的地方,也就是初始化。

以一个冒号开始;逗号分隔;每个成员变量后面跟一个放在括号中的初始值或表达式。

注意:

每个成员变量在始化列表中只能出现一次(初始化只能初始化一次),

以下成员必须在初始化列表中初始化:

const成员变量;

引用成员变量;

自定义类型成员(无默认构造函数,也就是没有不需要传参的构造函数)。

成员变量在类中声明的顺序就是其在初始化列表中的初始化顺序,与在初始化列表中的先后次序无关。


explicit:

explicit修饰的构造函数,将会禁止单参构造函数的隐式转换,

如: Data d1=1;   //正确的,但是其是将1隐式为临时的Data型变量,再将临时的变量拷贝给d1。

Data& d1=1;         //错误的,因为1隐式转换的变量具有常性,不能改变,所以d1需要加const。

const Data& d1=1; //正确的。

如果加了explicit,就不能隐式转换了。



static成员

被static修饰的成员叫做静态成员,是存储在静态区的,是全局的,不是局限于某个对象使用的;

静态的成员变量一定在类外定义(初始化)。


特性:

静态成员变量为所有类对象所共有,不属于某个具体的实例。

静态成员变量必须在类外定义,定义时不加static关键字。

静态成员函数没有this指针,不能访问任何非静态成员。

非静态成员函数可以访问静态的成员函数。

因为类中各成员都是通过this指针来访问。

总结:

静态成员相当于全局成员,访问的时候不是由某个对象去访问,而是由类加域解释符访问。

如:Date::print();访问Date的静态成员方法。

类外不能直接访问类的私有成员,类内部可以直接访问,所以类外想要访问类内部成员,需要在类内部构建成员函数,在外部访问成员函数,继而访问类私有成员。




声明时给缺省值:

非静态成员可以在声明的时候给缺省值:

如:

private:

int _year=10;

int _month=2;

这都是声明的时候给了缺省值。



友元:(相当于朋友)

友元函数:相当于全局函数。

可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但是声明的时候需要在类内部声明,声明时需要加上friend关键字。

注意

友元函数可以访问类的私有和保护成员,但不是类的成员函数。

友元函数不能用const修饰。


友元类:

友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非共有成员 。

友元关系是单向的,不具有交换性。

友元关系不具有传递性。




©著作权归作者所有:来自51CTO博客作者我要进大厂的原创作品,如需转载,请注明出处,否则将追究法律责任

每一份赞赏源于懂得

赞赏

0人进行了赞赏支持

更多相关文章

  1. “手撕”BP算法——使用MATLAB搭建简单的神经网络(附代码)
  2. 练习2-10 计算分段函数[1] (10分)
  3. JavaScript之模块相关知识初了解
  4. 启动延时缩短 50%-80%,函数计算发布镜像加速功能
  5. VS经常提示函数不安全(报错、报警告),该怎么解决?
  6. 14 个 JavaScript 代码优化技巧
  7. 翻译:《实用的Python编程》01_01_Python
  8. Influxdb中Select查询请求结果涉及到的一些数据结构
  9. 【每天一题】php面试时,你是否经常被问到?

随机推荐

  1. Kubernetes 原生 CI/CD 构建框架 Argo 详
  2. 5A的成绩通过PMP考试,意外的惊喜
  3. 《大型网站系统与Java中间件》读书笔记 (
  4. 什么是jQuery?
  5. Python运算符分为哪几类?Python学习系列!
  6. 【3y原创】什么是保险
  7. 我常用的自动化部署技巧,贼好用,推荐给大家
  8. Github标星34K+Star,这款开源项目助你秒建
  9. SQL-JOINS用法说明
  10. c语言利用时间戳生成随机数