2.1 C++类的定义和声明
参考:http://www.weixueyuan.net/view/6333.html
总结:
类相当于一个新的数据类型,定义类对象时,除了能定义单个变量以外,用类定义一个数组或者指针都是可行的。
在用类定义对象的时候,一定要先给出类声明。
C++语言可以看成是C语言的扩展和改进,相对于C语言,C++语言主要是增添了面向对象的特性。类(Class)则是C++面向对象编程的实现方式。
无论是何种编程语言,进行面向对象程序设计都将是从类的设计开始的。什么是类呢?其实很简单,我们可以理解为一种用户自定义的数据类型,类似于C语言里面的结构体(struct),在本章最后我们将对比类和结构体之间的异同。
首先我们来了解一下类的声明,先来看一个例子。
[例1] 一个最简单的类声明:
- class student
- {
- //可以在此处声明类成员变量和成员函数
- };
在例1中创建了一个student类,可以在该类中声明student类的成员变量和成员函数,用于描述student的各方面特性,例如姓名、学号、年龄等信息。
在例1中class是C++关键字,也是用于类声明的关键字。紧接class关键字之后的是我们自定义的类名student。
例1中的类定义我们可以理解为我们定义了一种新的数据类型,该数据类型的标识符为student(这个类似于int是C++中整形的标识符)。
特别要注意的一点是,在类声明结束处右括号“}”后面右一个分号“;”,这个分号一定不能忘记,它是类声明的一部分。如果漏掉则会在程序编译不通过。
声明了student数据类型之后,我们就可以用其定义变量了,如:
- student LiLei; //创建对象
在这一条语句中就利用student数据类型声明了一个LiLei的变量,这和
- int a; //定义整形变量
语句定义了一个整型变量表达的意思是类似的。而LiLei这个变量我们称之为student类的对象。
在用类定义对象的时候,一定要先给出类声明,这就好比用某种自定义数据类型来定义变量的时候,我们必须要先给出该数据类型的声明一样。由于C++里面本身集成一些常用数据类型,如int、bool、double等,所以在用这些数据类型声明变量时不需要再由我们自己给出类型声明了。
在定义类的对象时,class关键字可要可不要,如例2所示,但通常出于习惯我们通常都会省略掉class关键字。
[例2] class关键字可要可不要:
定义类对象时,除了能定义单个变量以外,用类定义一个数组或者指针都是可行的。
[例3] 定义对象数组或指针:
- student all_student[1000];
- student * pointer;
在例3中,我们定义了一个all_student数组,该数据拥有1000个元素,每一个元素都是student类型。此外,我们定义了一个student类型的指针pointer,该指针可以指向student类型的变量,其用法跟普通指针是一样的。
2.1 C++类的定义和声明的更多相关文章
- 12.1——类的定义与声明,隐含的this指针
类的定义与声明: (1)将const放在成员函数的形参列表之后,可以将将成员函数声明为常量,而它的意思是函数不能改变所操作的数据成员 这里必须在声明和定义处都加上const. (2)成员函数有一个隐含 ...
- C#学习历程(九)[类的定义与声明]
一.C#中类的声明 在C#中必须先声明类,然后才能在程序中使用. 类的声明格式如下: [类的属性] [访问修饰符] class 类名称 [: 父类名]{ [成员修饰符] 类的成员变量或者成员函数 ...
- C++类的定义之作用域
每个类都定义了自己的新作用域和唯一的类型.在类的定义体内声明内成员,将成员名引入类的作用域.两个不同的类具有两个不同的类作用域. 例如: Class First { int memi; double ...
- c++学习笔记之基础---类内声明函数后在类外定义的一种方法
在C++的“类”中经常遇到这样的函数, 返回值类型名 类名::函数成员名(参数表){ 函数体.} 双冒号的作用 ::域名解析符!返回值类型名 类名::函数成员名(参数表) { 函数体. } 这个是在类 ...
- C++的模板类:不能将定义与声明写在不同文件中
问题来源 今天看了orbslam2自带的第三方库DBoW2的TemplatedVocabulary.h文件,发现其中模板类的函数成员的定义与声明放在了同一个文件:同时发现,DBoW2的CMakeLis ...
- python类的定义和使用
python中类的声明使用关键词class,可以提供一个可选的父类或者说基类,如果没有合适的基类,那就用object作为基类. 定义格式: class 类名(object): "类的说明文档 ...
- 小心C语言的定义与声明
小心C语言的定义与声明 转自360博客 注:为便于说明问题,文中提及的变量和函数都被简化. 一.起源 DBProxy在测试过程中,发现对其执行某步管理操作后,程序有时会崩溃,但不是每次都出现. 二.G ...
- (转载)OC学习篇之---类的定义
之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那 ...
- C语言全局变量的定义与声明
C语言中全局变量的定义与声明困扰着许多C语言初学者.本文讲述了全局变量定义与声明的用法,而且本为也将阐述这种用法的内在原理.我们先从两个错误例子引入,以下两个例程都在vc6.0平台上测试. 两种错误例 ...
随机推荐
- 【第十四章】 springboot + profile(不同环境读取不同配置)
具体做法: 不同环境的配置设置一个配置文件,例如:dev环境下的配置配置在application-dev.properties中:prod环境下的配置配置在application-prod.prope ...
- NetMagic Simple Overview
参考: NetMagic Startup: How to develop NetMagic rapidly NetMagic Simple Overview NetMagic 是什么? NetMagi ...
- POJ 3295 Tautology(构造法)
http://poj.org/problem?id=3295 题意: 判断表达式是否为永真式. 思路: 把每种情况都枚举一下. #include<iostream> #include< ...
- UVa 12545 比特变换器
https://vjudge.net/problem/UVA-12545 题意:输入两个等长的串S和T,其中S包含字符0,1,?,但T只包含0和1. 用尽量少的步数把S变成T.每步有3种操作: ①把S ...
- python argparse模块--转载
add_argument:读入命令行参数,该调用有多个参数 ArgumentParser.add_argument(name or flags…[, action][, nargs][, const] ...
- spoj TBATTLE 质因数分解+二分
题目链接:点击传送 TBATTLE - Thor vs Frost Giants #number-theory #sliding-window-1 Thor is caught up in a fie ...
- 使用docker安装myql/redis等软件
使用docker安装myql/redis等软件 概述 基本命令 安装mysql 安装redis 概述 在开发时经常需要安装各种软件,有时甚至为了验证一个命令不得不安装配置一个缓存.数据库.MQ等,耽误 ...
- ubuntu14.04, keyboard shortcuts
- Codeforces 285C - Building Permutation
285C - Building Permutation 思路:贪心.因为每个数都不同且不超过n,而且长度也为n,所有排列只能为1 2 3 ......n.所以排好序后与对应元素的差值的绝对值加起来就是 ...
- SQL Timeout超时的处理方法
第一步:修改Web.config配置文件.在数据库连接字符串中加上连接时间Connect Timeout,根据实际情况定时间. <!--连接数据库--> <connectionStr ...