参考: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. 乘积最大|2018年蓝桥杯B组题解析第十题-fishers

    标题:乘积最大 给定N个整数A1, A2, ... AN.请你从中选出K个数,使其乘积最大. 请你求出最大的乘积,由于乘积可能超出整型范围,你只需输出乘积除以1000000009的余数. 注意,如果X ...

  2. HDU 5873 Football Games(竞赛图兰道定理)

    http://acm.hdu.edu.cn/showproblem.php?pid=5873 题意: 现在有比赛,所有队伍两两进行比赛,赢的积2分,输的积0分,如果平局的话就各自都积1分,现在给出每只 ...

  3. web.xml配置文件详细解读

    对于一个J2EE应用的开发者,或者叫java web后台的开发者来说.经常会和web.xml打交道,偶尔用到几个标签不知道啥意思.然后就度娘一下,久而久之虽然大概知道web.xml的基本使用方法,但是 ...

  4. MVC ---- IEnumerable<T>、List<T> 前台遍历展示

    突然做前台数据展示,发现IEnumerable 对一个列表的展示还是可以,但要是多个类型放在一个表中如何处理呢,如下: 一个类IEnumerable遍历 后台 public IEnumerable&l ...

  5. 成对HMM(Pair HMMs)用于双序列比对--转载

    http://blog.163.com/bioinfor_cnu/blog/static/19446223720118205527863/ 所有文章:http://blog.163.com/bioin ...

  6. UOJ #56. 【WC2014】非确定机

    题意大意:给出一个输出文件,求输入. 1.满足所求的输入文件是一张图,n个点,m条边,所用算法是k(k在给出的输出文件中给出了) 2.算法是图论算法?!k基本上→两位数组成,若十位数相同,说明基本算法 ...

  7. WPF基础学习笔记整理 (四) 布局

    WPF使用的是容器(container)进行布局: WPF窗口(Window类型)只能包含单个元素,故为了放置多个元素并增强界面效果,引入了容器: WPF布局容器都派生自System.Windows. ...

  8. shell 清空指定大小的日志文件

    #!/bin/bash # 当/var/log/syslog大于68B时 if ! [ -f /var/log/syslog ] then echo "file not exist!&quo ...

  9. 装B必备之 快捷键配置

    作为一个程序员 所有程序都用快捷来这是装B必备的无形装B 最为致命.... 开始搞起 第一步配置环境变量 在系统D盘新建一个文件夹  D:\cache; 然后把这个路径 配置上 D:\cache; 最 ...

  10. 移动端视频h5表现问题汇总

    1. 同屏播放视频 <video src="" x-webkit-airplay="true" webkit-playsinline="true ...