C++基础之类和对象二
(1)指向类的成员的指针分为指向数据成员的指针和指向成员函数的指针两种。一个类的对象用运算符“.*”来操作指向该类成员的指针,而一个指向类的对象的指针用
运算符“->”来操作指向该类成员的指针。
(2)对象指针和对象引用都可以作为函数参数,在C++语言中,经常使用对象引用作为函数参数。因为用对象引用作为函数参数比用对象指针作为函数更简洁明了,实参用对象,形参用对象引用即可,又由于用对象引用作为函数参数比用对象作为函数参数提高效率。因此,C++程序中多用对象引用作为函数参数。
(3)this是一个隐含于每个类的成员函数中的特殊指针,该指针指向正被某个成员函数操作的对象。通常它被隐含着,有时它会被显式使用。
(4)对象数组是同一个类的若干个对象组成的数组。该数组的每个元素是某类的个对象。对象数组可以使用初始化表进行初始化,也可以为每个元素赋值
(5)指向对象数组的指针通常来指向二维对象数组的某一行,这就是指向一维对象数组的指针。
(6)对象指针数组是一种元素为指向对象指针的数组。一维一级对象指针数组是经常使用的,该数组的元素是一级对象指针
int (*p)[];//p是一个指向一维数组的指针,该数组有3个int型元素 <类名>(*PL)[];//PL是指向数组的指针名,该指针是一个指向一维对象数组的指针,该数组中有3个元素,每个元素是指定<类名>的对象
7)常类型修饰符 const是用来定义常量的。它可以定义一般常量、常对象、常引用和常指针。常指针有两种形式,
一种是指针中存放的地址不变,它所指向的变量可变的常指针,格式为:<类型>* const<指针名>=<初始值>;
另一种是指针中存放的地址可变,它们指向的变量不变的常指针,格式为:<类型> const*<指针名>=<初始值>;。
(8)常类型中还有常成员,它分为常数据成员和常成员函数。使用 const修饰的数据成员称常数据成员,它需要在构造函数的成员初始化表中进行初始化,并且它的值不能被更新。使用 const修饰的成员函数称常成员函数。只有常成员函数才能操作常变量和常对象
#include <iostream. h>
class A
{
pubic:
A(int i);
void print();
const int& r;
private:
const int a;
static const int b;
};
const int A::b=;
A::A(int i): a(),r(a)
{
}
void A: :print()
{
cout<<a<<":"<<b<<":"<<r<<endl;
}
void main()
{
A a1(),a2();
al. print();
a2. print ();
}
执行该程序输出如下结果:
::
::
说明:该程序中,说明了如下三个常类型数据成员:
const int&ir
const int a s
static const int b
其中,r是常imt型引用,a是常int型変量,b是静态常int型量。
程序中对静态数据成员b进行初始化。
值得注意的是构造函数的格式如下所示:
A(int i): a(i), r(a)
{}
其中,冒号后边是一个数据成员初始化列表,它包含两个初始化项,用逗号进行了间隔。
(9)一个类的成员是另一个类的对象时,该成员被称为子对象,它是一种数据成员。含有子对象的类的构造函数的成员初始化表中要包含对子对象的初始化,
其格式为:<子对象名>(<参数表>)。
(10)动态创建的对象又称为堆对象。堆对象是可以根据需要随时释放的。创建堆对象使用运算符new,释放堆对象使用运算符 delete
(11)运算符new可用来创建变量和对象的指针,其格式如下:
<类型>*<指针名>=new<类型>(<初值>)
这将创建一个指向变量或对象的指针,并且可以对所指向的变量或对象进行初始化。
该运算符还可以创建一般类型变量或对象数组,其格式如下
<类型>*<指针名>=new<类型>[<大小>];
// delete[] <指针名>
(12)C++语言中的类型转换包含了C语言中的隐含转换和强制转换两种。一般由高类型转换为低类型时,要进行强制转换。
(13)C++程序中,具有一个参数的构造函数具有类型转换的功能。这种转换通常是将一个数值转换为某类的对象。
(14)类中还有一种特殊的成员函数称为转换函数。这种转换函数通常用来将某类的对象转换成为转换函数所定义的类型。定义转换函数格式如下所示。
operator<转换函数名>()
{函数体}
其中,<转换函数名>是类型说明符
C++基础之类和对象二的更多相关文章
- 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)
目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
- windows下mongodb基础玩法系列二CURD附加一
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
- Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)
Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...
- Java基础-IO流对象之随机访问文件(RandomAccessFile)
Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...
- Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)
Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...
- Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)
Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...
- Java基础-IO流对象之打印流(PrintStream与PrintWriter)
Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...
- Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)
Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...
随机推荐
- JavaWeb -- 会话, Cookie 和 Session
1. 会话 •Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样,web资源处理的就是 ...
- form表单验证失败,阻止表单提交
form表单验证失败,阻止表单提交 效果演示: 贴上完整代码: <!DOCTYPE html> <html lang="en"> <head> ...
- jQuery创建DOM的方法
jQuery1.4带来了一个全新的便捷地清晰的DOM对象创建方法,在 jQuery 1.4中,我们可以传递一个对象作为第二个参数. 这个参数接受一个属性的集合,这些可以传递给.attr() 方法.此外 ...
- Application.messagebox对话框样式
if Application.MessageBox('删除不能恢复,确认删除吗?', '删除提示', MB_OKCANCEL + MB_ICONQUESTION)=mrOk thenbegin Sho ...
- Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化
对其用户和应用程序来讲,每一个VPS平台的运行和管理都与一台独立主机完全相同,因为每一个VPS均可独立进行重启并拥有自己的root访问权限.用户.IP地址.内存.过程.文件.应用程序.系统函数库以及配 ...
- Mysql5.5 InnoDB存储引擎配置和优化
环境为CentOS系统,1G内存,Mysql5.5.30.在/etc/my.cnf内添加: 复制代码代码如下: skip-external-lockingskip-name-resolvemax_co ...
- Java集合类--->入门上篇
最近我又在研究Java语言,这是第五次还是第六次学习Java的集合类,你也许会惊讶为什么这么多次?哈哈,因为之前的我没有记录下来,忘记了,当然最主要还是觉得自己毅力不够,没有坚持.那么,这次我将换一种 ...
- Java微信开发_Exception_01_The type org.xmlpull.v1.XmlPullParser cannot be resolved. It is indirectly referenced from required .class files
一.源码: package com.souvc.weixin.util; import java.io.InputStream; import java.io.Writer; import java. ...
- 错误名称:Uncaught SyntaxError: Unexpected identifier
控制台输出: 1.谷歌:Uncaught SyntaxError: Unexpected identifier 2.火狐:SyntaxError: missing ] after element li ...
- Mesos提交任务没有被执行
当通过marathon提交了一个任务后,发现一直处于waiting状态: 回到mesos,执行MASTER=$(mesos-resolve `cat /etc/mesos/zk`) & me ...