C++拾遗(八)类——概念、定义与实现
Class与Struct
区别在于class默认访问类型是private,struct默认访问类型是public。
另外在使用习惯上,struct只用来表示纯粹的数据对象或没有私有部分的类。
类中的内联函数
- 定义在类声明中的函数自动成为内联函数。
- 在类实现时使用inline限定符也是内联函数。
这两者是等价的。
类的实例
每个对象有自己的存储空间储存各自的内部变量和类成员,但是同一个类的所有对象共用一组类方法。
类作用域
声明符号常量时使用static或者enum。
使用 enum 时不会创建类数据成员,只是在作用域为这个类的代码中使用值来替换符号。
使用 static 时,会存储到静态成员区域,不会存储到对象中。
类中的const
1.const修饰的成员变量初始化只能用初始化列表。
2.const修饰的成员函数不能修改成员变量的值,因为在X类的const成员函数中,this指针的类型为:const X* const。如果有普通成员函数与const成员函数同名(这样构成重载),则默认调用普通成员函数。
如果这时要使用const成员函数,需要在实例化的时候实例化一个常对象,如:const ClassName c。
3. 常对象只能调用常成员函数,普通对象可以调用全部成员函数。
this指针
1. 当对一个对象调用成员函数时,编译器先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。
2. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针,该参数的位置在其他参数前。
3. 在C++中,this指针被隐含地声明为: X *const this,这意味着不能给this 指针赋值;在X类的const成员函数中,this指针的类型为:const X* const, 这说明this指针所指向的这种对象是不可修改的。
C++拾遗(八)类——概念、定义与实现的更多相关文章
- C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)
		什么是面向对象? 在软件的设计过程中的两种方式: 把程序按照算法的执行步骤来拆解,一步步实现,这是面向过程编程: 把程序按照现实世界的理解,分成不同对象,通过多个对象之间的相互作用,来完成程序的最终功 ... 
- JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
		在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 一,概述 在Java语言中 ... 
- (转载)OC学习篇之---类的定义
		之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那 ... 
- java问题:类的定义,对象的定义?
		java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里 ... 
- 夜谈Java类的定义
		女孩:谈Java了,好耶? 男孩:夜谈一下,Java的类的定义~ 女孩:那谈Java的类的什么呢? 男孩:类的定义,对象的定义,类中的方法,构造方法,this关键字,方法的重载,Java中的类的访问权 ... 
- java入门---对象和类&概念详解&实例
		Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 这篇文章,我们主要来看下: 对象:对象是类的一个实例(对象不是找个女朋友),有状态 ... 
- C++基础学习8:类的定义(class)
		先来说说C和C++中结构体的不同 a) C语言中的结构体不能为空,否则会报错(??) b) C语言中内存为空结构体分配大小为0,C++中为结构体和类分配大小为1byte c) C语言中的结构体只涉及到 ... 
- OC学习篇之---类的定义
		OC中类的相关知识 OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那么对类和对象的概念就不陌生了,因为Java是非常纯正的面向对象设计语言 ... 
- php类的定义与实例化方法
		php类的定义 类是对某个对象的定义.它包含有关对象动作方式的信息,包括它的名称.方法.属性和事件.实际上它本身并不是对象,因为它不存在于内存中.当引用类的代码运行时,类的一个新的实例,即对象,就在内 ... 
- XML模块,面向对象思想与类的定义
		今日内容 XML模块,面向对象思想,类的定义 1.XML模块 xml是一种可扩展的标记语言格式如下 使用 <> 作为标签格式 <tag style: '' color:read '' ... 
随机推荐
- 关于-webkit-tap-highlight-color的一些事儿
			这个属性只用于iOS (iPhone和iPad).当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背景.要重设这个表现,你可以设置-webkit-tap- ... 
- 理解使用static import 机制(转)
			J2SE 1.5里引入了“Static Import”机制,借助这一机制,可以用略掉所在的类或接口名的方式,来使用静态成员.本文介绍这一机制的使用方法,以及使用过程中的注意事项. 在Java程序中,是 ... 
- MYSQL转MSSQL
			SSMA 2008 for MySQL 1.0.exe SSMA 2008 for MySQL 1.0 Extension Pack.exe mysql-connector-odbc-5.1.11-w ... 
- 一个linux下socket编程的例子,client连server
			关于socket编程,以下文章写得比较好:http://www.cnblogs.com/xudong-bupt/archive/2013/12/29/3483059.html 1. accept()函 ... 
- K - Transformation-hdu 4578(多操作混合区间更新)线段树
			题意:有四种操作 1, 区间 [l, r] 的值都加上 C 2, 区间 [l, r] 的值都乘上 C 3, 区间 [l, r] 的值都变为C 4, 求区间 [l, r]所有数的p次方的和 分析 ... 
- web前端面试试题总结---javascript篇
			JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ... 
- hibernate初涉
			好久都不曾写写总结一些东西了,惰性真的是令人难以克制!虽然和许多北漂族一样,艰苦而又迷茫,但是我总能找到一些方向,一点期盼,因为你就我的目标.我会坚持下去,重拾青春的热血,既然人生如戏,那我不当猪脚. ... 
- vs2008打包公布程序
			vs2008打包公布程序 一vs2008中新建 安装项目,确定(新建 安装向导 也能够) 二.加入内容 1.加入主要内容: 应用程序目录=>右键=>加入=>文件,找到须要的文件,包含 ... 
- [AngularJS] Design Pattern: Simple Mediator
			We're going to use rootScope emit here to send out events and then we're going to listen for them in ... 
- Android 网络编程与通信协议
			大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作, HttpURLConnection和HttpClient.这两种方式都 ... 
