参考:http://www.weixueyuan.net/view/6333.html

总结:

  类相当于一个新的数据类型,定义类对象时,除了能定义单个变量以外,用类定义一个数组或者指针都是可行的。

  在用类定义对象的时候,一定要先给出类声明。

C++语言可以看成是C语言的扩展和改进,相对于C语言,C++语言主要是增添了面向对象的特性。类(Class)则是C++面向对象编程的实现方式。

无论是何种编程语言,进行面向对象程序设计都将是从类的设计开始的。什么是类呢?其实很简单,我们可以理解为一种用户自定义的数据类型,类似于C语言里面的结构体(struct),在本章最后我们将对比类和结构体之间的异同。

首先我们来了解一下类的声明,先来看一个例子。

[例1] 一个最简单的类声明:

  1. class student
  2. {
  3. //可以在此处声明类成员变量和成员函数
  4. };

在例1中创建了一个student类,可以在该类中声明student类的成员变量和成员函数,用于描述student的各方面特性,例如姓名、学号、年龄等信息。

在例1中class是C++关键字,也是用于类声明的关键字。紧接class关键字之后的是我们自定义的类名student。

例1中的类定义我们可以理解为我们定义了一种新的数据类型,该数据类型的标识符为student(这个类似于int是C++中整形的标识符)。

特别要注意的一点是,在类声明结束处右括号“}”后面右一个分号“;”,这个分号一定不能忘记,它是类声明的一部分。如果漏掉则会在程序编译不通过。

声明了student数据类型之后,我们就可以用其定义变量了,如:

  1. student LiLei; //创建对象

在这一条语句中就利用student数据类型声明了一个LiLei的变量,这和

  1. int a; //定义整形变量

语句定义了一个整型变量表达的意思是类似的。而LiLei这个变量我们称之为student类的对象。

在用类定义对象的时候,一定要先给出类声明,这就好比用某种自定义数据类型来定义变量的时候,我们必须要先给出该数据类型的声明一样。由于C++里面本身集成一些常用数据类型,如int、bool、double等,所以在用这些数据类型声明变量时不需要再由我们自己给出类型声明了。

在定义类的对象时,class关键字可要可不要,如例2所示,但通常出于习惯我们通常都会省略掉class关键字。

[例2] class关键字可要可不要:

  1. class student LiLei; //正确
  2. student LiLei; //同样正确

定义类对象时,除了能定义单个变量以外,用类定义一个数组或者指针都是可行的。

[例3] 定义对象数组或指针:

  1. student all_student[1000];
  2. student * pointer;

在例3中,我们定义了一个all_student数组,该数据拥有1000个元素,每一个元素都是student类型。此外,我们定义了一个student类型的指针pointer,该指针可以指向student类型的变量,其用法跟普通指针是一样的。

2.1 C++类的定义和声明的更多相关文章

  1. 12.1——类的定义与声明,隐含的this指针

    类的定义与声明: (1)将const放在成员函数的形参列表之后,可以将将成员函数声明为常量,而它的意思是函数不能改变所操作的数据成员 这里必须在声明和定义处都加上const. (2)成员函数有一个隐含 ...

  2. C#学习历程(九)[类的定义与声明]

    一.C#中类的声明 在C#中必须先声明类,然后才能在程序中使用. 类的声明格式如下: [类的属性] [访问修饰符] class 类名称 [: 父类名]{    [成员修饰符] 类的成员变量或者成员函数 ...

  3. C++类的定义之作用域

    每个类都定义了自己的新作用域和唯一的类型.在类的定义体内声明内成员,将成员名引入类的作用域.两个不同的类具有两个不同的类作用域. 例如: Class First { int memi; double  ...

  4. c++学习笔记之基础---类内声明函数后在类外定义的一种方法

    在C++的“类”中经常遇到这样的函数, 返回值类型名 类名::函数成员名(参数表){ 函数体.} 双冒号的作用 ::域名解析符!返回值类型名 类名::函数成员名(参数表) { 函数体. } 这个是在类 ...

  5. C++的模板类:不能将定义与声明写在不同文件中

    问题来源 今天看了orbslam2自带的第三方库DBoW2的TemplatedVocabulary.h文件,发现其中模板类的函数成员的定义与声明放在了同一个文件:同时发现,DBoW2的CMakeLis ...

  6. python类的定义和使用

    python中类的声明使用关键词class,可以提供一个可选的父类或者说基类,如果没有合适的基类,那就用object作为基类. 定义格式: class 类名(object): "类的说明文档 ...

  7. 小心C语言的定义与声明

    小心C语言的定义与声明 转自360博客 注:为便于说明问题,文中提及的变量和函数都被简化. 一.起源 DBProxy在测试过程中,发现对其执行某步管理操作后,程序有时会崩溃,但不是每次都出现. 二.G ...

  8. (转载)OC学习篇之---类的定义

    之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那 ...

  9. C语言全局变量的定义与声明

    C语言中全局变量的定义与声明困扰着许多C语言初学者.本文讲述了全局变量定义与声明的用法,而且本为也将阐述这种用法的内在原理.我们先从两个错误例子引入,以下两个例程都在vc6.0平台上测试. 两种错误例 ...

随机推荐

  1. UVa 12563 劲歌金曲(0-1背包)

    https://vjudge.net/problem/UVA-12563 题意: 在一定的时间内连续唱歌,最后一首唱11分钟18秒的劲歌金曲,问最多能长多长时间. 思路: 0-1背包问题,背包容量为t ...

  2. spring +servlet 与 spring MVC

    spring serlvetSpring框架中context-param与servlet中init-param的contextConfigLocation的区别https://blog.csdn.ne ...

  3. java命令行执行程序解决依赖外部jar包的问题

    用java命令行直接执行程序,如果这个程序需要引用外部jar包.就不能单纯用java xx来执行 如果你的jar包和程序就在一个目录: 编译 javac -cp D:\yy\yy.jar,D\xx\x ...

  4. shell while 语句

    普通循环格式: while condition do command done 例子一 #!/bin/bash )) do echo $int let "int++" done 结 ...

  5. spring与shiro的集成

    web.xml中的配置: <!-- The filter-name matches name of a 'shiroFilter' bean inside applicationContext. ...

  6. Atcoder Yet Another Palindrome Partitioning(状压dp)

    Atcoder Yet Another Palindrome Partitioning 思路: 一个字符串满足条件的情况是奇数字母个数小于等于1,也就是异或起来是1<<j(0<=j& ...

  7. angular5 生命周期钩子函数

    生命周期执行顺序ngOnChanges 在有输入属性的情况下才会调用,该方法接受当前和上一属性值的SimpleChanges对象.如果有输入属性,会在ngOnInit之前调用. ngOnInit 在组 ...

  8. .net GUI框架

    十大开源的.NET用户界面框架 让GUI设计不再犯难 选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题,因为用户界面相当于一款应用的"门面",直接面向用户.好的UI ...

  9. BeanShell使用json.jar包处理Json数据

    环境准备 ①Jmeter版本 ,JDK ②前置条件:将json.jar包置于..\lib\下, 如果还是报错,可以将该jar包添加到测试计划的Library中:否则会报:Typed variable ...

  10. 20170601xlVBA正则表达式提取体检数据

    Public Sub GetFirst() GetDataFromWord "初检" End Sub Public Sub GetDataFromWord(ByVal SheetN ...