1.类的定义与实现
首先我们先要弄明白.cpp文件和.h文件的区别,cpp文件是需要编译的文件,是一个独立的编译单元,而h文件不需要编译,只是用于预处理。
通常我们会在cpp文件中,完成函数的实现,在h文件中进行函数的声明。在引用时,我们只要包含其头文件即可,便可以调用相应cpp中的实现函数。因此,在类实现文件cpp中,我们必须包含定义该类的头文件。
//student.h (这是头文件,在此文件中进行类的声明)
class Student //类声明
{ public:
void display( );
private:
int num;
char name[20];
char sex;
//student.cpp //在此文件中进行函数的定义
#include
#include ″student.h″
void Student∷display( )
{cout<<″num:″<
将类的定义和实现分开的好处在于可以提高编译效率,假设有一个类A被多个cpp同时包含,如果将定义与实现都放在h文件中,那么每次对A进行修改,这几个包含A的文件都必须重新编译,而如果头文件中只有声明,那么只修改A的实现不会导致这些文件的重新编译。
2.类的声明
class 类名称
public:
公有成员(外部接口)
private:
私有成员 (只允许本类中的函数访问,而类外部的任何函数都不能访问)
protected:
保护成员(与private类似,差别表现在继承与派生时)
和struct 相比,class数据成员默认私有,struct数据成员默认公有。
类是c++引入的核心数据类型,类是对数据和方法的封装,地位上与内置类型(复合类型)相同,只是一种自定义数据类型
类的声明,又称类的前向声明,即forward declaration,告诉编译器class类型,但当前并不知道class具体细节,是不完全类型
类的声明只能用于指针(引用)类型,因为指针(引用)类型字长固定,编译器知道分配多少内存空间,如何操作指针(引用)类型
类的声明不能用于
C++语言可以看成是C语言的扩展和改进,相对于C语言,C++语言主要是增添了面向对象的特性。类(Class)则是C++面向对象编程的实现方式。
无论是何种编程语言,进行面向对象程序设计都将是从类的设计开始的。什么是类呢?其实很简单,我们可以理解为一种用户自定义的数据类型,类似于C语言里面的结构体(struct),在本章最后我们将对比类和结构体之间的异同。
首先我们来了解一下类的声明,先来看一个
面向对象最大的特征就是提出了类和对象的概念。在以面向对象的方式开发应用程序时,将遇到的各种事物抽象为类,类中通常包含数据和操作数据的方法,用户通过实例化类对象来访问类中的数据和方法。
一、类的定义
class/struct 类名 //类头
{数据和方法的定义(可能含有类型成员)}; //类体
1、使用class和struct的...
类的声明,又称类的前向声明,即forward declaration,告诉编译器class类型,但当前并不知道class具体细节,是不完全类型
类的声明只能用于指针(引用)类型,因为指针(引用)类型字长固定,编译器知道分配多少内存空间,如何操作指针(引用)类型
类的声明不能用于实例对象,因为对于实例对象,编译器需要知道class具体细节以便确定分配多少内存空间,如何操作实例对象
声明这个类并没有为Cat分配内存。它只是告诉编译器:Cat是什么,他包含什么数据(itsAge和itsWeight),功能是什么(Meow())、同时他还告诉编译器Cat多大,也就是说,编译器对于你创建的每个Cat必须留出多大内存空间。在这个.
对于内置类型来说,有关操作被内置到编译器中。例如,整型可以进行 % 运算,而浮点型不可以。
2. C 和 C++ 自定义类型的演示
在 C++ 中定义用户自定义的类型时,就必须自己提供操作自定义类型的方法。付出这些劳动换来了根据实际需要定制新数据类型的强大功能和灵活性。例如,自定义一个
一、头文件
1、 一般来说,头文件仅仅用于声明,相应的定义要放在对应的cpp文件中。 声明的内容一般可以是:1. 类定义体;2.类中的成员方法; 3. 类外的函数; 4. 类外的变量;5. 类型。
一个文件(比如main.cpp)包含(#include)了一个头文件(比如item.h),就相当于声明了Item.h中声明的所有内容。
2、但是const常量,inline函数,static函数...
class Screen; //Screen类的声明
这种声明有时被称作前向声明(forward declaration),它向程序中引入了名字Screen并且指明了Screen是一种类类型。对于类型Screen来说,在它的声明之后和定义之前是一个不完全类型(incomplete type),也就...