C++之类(一)
来源:互联网 发布:保险大数据 编辑:程序博客网 时间:2024/05/29 14:16
在C++之中,我们使用类来定义自己的数据类型。通过自定义数据类型,可以使我们的编程变得更加方便。或者说C++设计类的目的就是为了使我们可以像使用基本数据类型一样来使用自定义的数据类型。我们知道基本数据类型都有自己相应的库函数,例如char类型的一些相关函数就在string.h这个头文件里面给我们提供了。类也是一样的,它可以定义自己的函数(方法)。下面给出类的声明:
class MyClass{//数据成员int num;char str[10];double real;//函数成员void show();};一个类就想上面这样,由它的数据成员和函数成员共同构成。类相比C语言的结构体,多了函数成员这部分。我们在C语言的结构体之中不能出现函数成员,只有数据成员,但是C语言的结构体里面可以容纳函数指针,我们可以通过函数指针来调用函数。从这个角度来看,C语言也能做到类的功能。等到看完类,我们再来继续这个问题。
c++的类由关键字class来定义,class后面接着是类的名字。类有数据成员和函数成员。这就是直观看上去的类。下面我们继续完善这个类。
class MyClass{//数据成员private://修饰符int num[10];char str;double real;//函数成员public://修饰符void show();protected://修饰符};可以看到有三个成员修饰符,这些修饰符的功能限制了我们使用成员的范围。
首先说一下修饰的作用域:从上一个修饰符开始直到下一个修饰符才结束,在此范围之内都是它的作用域。
private:这个修饰符修饰的成员只能在类内被使用,是类私有的成员。
public:它所修饰的成员可以在类内,也可以在类外被使用。是类所公开的成员。
protected:是被保护的成员,只能在类内部使用,或者被子类继承使用。
下面我们来看一下类的函数如何定义:
首先,类的函数可以在类内部定义,如下:
class MyClass{//数据成员private://修饰符int num;char str[10];double real;//函数成员public://修饰符void show(){cout << num << endl;cout << str << endl;cout << double << endl;}protected://修饰符};其次,也可以在类的外部定义,如下:
void MyClass::show(){cout << num << endl;cout << str << endl;cout << double << endl;}这样定义,需要注意将函数返回值写在最前面。然后是类名。中间这个符号是作用域运算符,然后是函数名。接着是参数列表,最后是函数体。
下面,我们给MyClass这个类再加上一些东西。然后跑一下这个程序。
#include <iostream>#include <string.h>using namespace std;class MyClass{//数据成员private://修饰符int num;char str;double real;//函数成员public://修饰符void show();void MyClass::set(int a,char * ch,double b);protected://修饰符};int main(){MyClass class1;class1.set(10,'h',3.14159);class1.show();return 0;}void MyClass::show(){cout << num << endl;cout << str << endl;cout << real<< endl;}void MyClass::set(int a,char * ch,double b){num = a;strcpy(&str,ch);real = b;}我们来看一下输出结果:
这就是类。从与现实所对应来看,类抽象了现实事物,它可以描述现实事物。比如:一个人有身高,体重,性别等数量上的特征,就可以抽象为类的数据成员;而一个人的能力,就能抽象为类的方法(函数)。比如,他会弹吉他,下围棋等。这就是他的技能。
阅读全文
0 0
- C++之类(一)
- Objective-C对象之类对象和元类对象(一)
- Objective-C对象之类对象和元类对象(一)
- Objective-C对象之类对象和元类对象(一)
- C++之类模板详解(一)
- C++之类和对象(一)
- C++之类的特性(一)
- C++primer难点之类
- 【C#】C#之类
- Bugzilla之类继承体系结构及其扩展应用(一)
- C++之类的构造与析构(一)
- C++面向对象编程(一)之类和对象
- Javascript学习笔记之类与继承(一)
- JAVA之类加载机制与反射(一)
- iOS runtime 学习之类的属性动态获取(一)
- C++之类的构造与析构(一)
- Python拾遗之类属性和实例属性(一)
- 用汇编的眼光看C++(之类继承)
- 棋盘覆盖问题
- ARM平台移植libcurl curl-7.49.0
- gif | jpg | png图片格式及应用场景
- Vue1.0学习总结(5)———vue-router的使用
- Python编程之函数
- C++之类(一)
- 如何更换MyEclipse或Eclipse的SVN
- gradle使用maven仓库出现的问题
- ReadHub android版
- FreeSWITCH安装手册
- 深入解析Android Design包——Behavior
- leetcode_107. Binary Tree Level Order Traversal II
- Vue2.0的变化(1)——vue2.0组件定义/生命周期/循环/自定义键盘/过滤器/组件通信的变化
- 遮罩层以下内容不可滚动的实现