在之前学习的C++章节里,可以发现结构体越来越不像C语言里的结构体了

比如,里面可以定义函数,可以定义private/public,结构体名还可以指向父类.

但是C++需要兼容C,所以C++中便提供了新的关键字class用来定义类

class

关键字class和struct用法完全相同(struct A == class B)

class与struct区别(如下图)

在struct中,所有成员的默认访问级别为pubilc

在class中,所有成员的默认访问级别为private

在以后的学习里,就专门使用class来定义类了,接下来做一个类

小实例-开发一个用于四则运算的类

-提供setOperator函数设置运算类型

-提供setParameter函数设置运算参数

-提供result函数进行运算

  • 返回值表示运算的合法性
  • 通过引用参数返回结果

通过operator.h头文件声明类,通过operator.cpp源文件来实现类

operator.h文件

#ifndef _OPERATOR_H_
#define _OPERATOR_H_ class Operator
{
private:
char memOp;
double memP1;
double memP2;
public:
bool SetOperator(char Op);
void SetParameter(double P1,double P2);
bool result(double & val);
};
#endif

operator.cpp文件

#include "operator.h"

bool Operator::SetOperator(char Op)
{
bool err=false;
if(Op == '+'||Op == '-'||Op == '*'||Op == '/')
{
memOp= Op;
err=true;
}
return err;
} void Operator::SetParameter(double P1,double P2)
{
memP1=P1;
memP2=P2;
}
bool Operator::result(double & val)
{
bool err=true;
switch(memOp)
{
case '+':
val = memP1+memP2;
break; case '-':
val = memP1-memP2;
break; case '*':
val = memP1*memP2;
break; case '/':
if( (-0.000000001 < memP1) && (memP2 < 0.000000001) )
{
err= false;
}
else
{
val = memP1/memP2;
}
break; default:
err=false;
break;
}
return err; }

Test.cpp文件

#include <stdio.h>
#include "operator.h" int main()
{
Operator Op;
double val=; Op.SetOperator('/');
Op.SetParameter(,); if(Op.result(val))
{
printf("val=%lf\n",val);
}
else
{
printf("CALL ERR\n");
}
return ;
}

编译运行:

小结

  • C++引进了新的关键字class定义类
  • struct和class区别在于默认访问级别不同

8.C++-类的关键字的更多相关文章

  1. WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配

    原文:WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 网上的 ...

  2. 31 面向对象编程 接口 普通类:只有具体实现 声明类的关键字是class,声明接口关键字是interface 接口的作用

    接口 概念 普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有! 接口:只有规范!自己无法写方法!专业的约束!约束和实现分离:面向接口编程~ 接口就是规范,定义的是一组规则,体现了现实世界中 ...

  3. PHP面向对象学习四 类的关键字

    1.关键字:final 用来定义类和方法的一个重要关键字,当定义类的时候该类将不能被继承, 当用来定义方法的时候该方法将不能被重载 2.关键字:static 用来定义类的静态属性或方法,可以在类未被实 ...

  4. JAVA类与对象(三)----类定义关键字详解

    static 表示静态,它可以修饰属性,方法和代码块. 1.static修饰属性(类变量),那么这个属性就可以用类名.属性名来访问,也就是使这个属性成为本类的类变量,为本类对象所共有.这个属性就是全类 ...

  5. com.google.gson的SerializedName解决实体类与关键字的重名

    使用google的gson包,解决实体类中字段与java关键字的重名: // 比如 当实体类中有switch关键字时,解决冲突如下 @SerializedName("switch" ...

  6. Java Object类 instanceof关键字 练习:判断是否为同一人 集合按照人的年龄排序,如果年龄相同按名字的字母顺序升序 Comparator比较器

    package com.swift; public class Same_Person_Test { public static void main(String[] args) { /* * Obj ...

  7. 【C# 线程】 volatile 关键字和Volatile类、Thread.VolatileRead|Thread.VolatileWrite 详细 完整

    overview 同步基元分为用户模式和内核模式 用户模式:Iterlocked.Exchange(互锁).SpinLocked(自旋锁).易变构造(volatile关键字.volatile类.Thr ...

  8. 用CIL写程序:定义一个叫“慕容小匹夫”的类

    前文回顾: <用CIL写程序:你好,沃尔德> <用CIL写程序:写个函数做加法> 前言: 今天是乙未羊年的第一天,小匹夫先在这里给各位看官拜个年了.不知道各位看官是否和匹夫一样 ...

  9. 【C++】继承(虚基类)

    类的继承与派生 面向对象技术强调软件的可重用性,这种重用性通过继承机制来实现.而在类的继承过程中,被重用的原有类称为基类,新创建的类称为派生类.派生类定义语法格式如下: class <派生类名& ...

随机推荐

  1. POJ 3581 Sequence [后缀数组]

    Sequence Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 6911   Accepted: 1543 Case Tim ...

  2. 从细菌GFF文件提取CDS序列并转换为氨基酸序列

    最近在上生物信息学原理,打算记录一些课上的作业.第一次作业:如题. 基本思路: 1.从GFF中读取CDS的起始终止位置以及正负链信息.GFF格式见http://blog.sina.com.cn/s/b ...

  3. Xcode的SVN提示"The request timed out."的解决方案

    问题描述 在利用Xcode的SourceControl进行SVN代码检出时,确认输入地址.帐号密码都正确的情况下,总是提示"The request timed out.".该问题的 ...

  4. git恢复误删除文件

    在git仓库管理下误删除文件一般会分为以下3种情况: 1.手动直接删掉,如选择-右击-删除 这种删除未修改本地仓库[版本库],只修改了工作区,直接git checkout -- fileName即可恢 ...

  5. 自兴人工智能------------python入门基础(2)列表和元祖

    一.通用序列操作: 列表中所有序列都可以进行特定的操作,包括索引(indexing).分片(slicing).序列相加(adding).乘法,成员资格,长度,最小值,最大值,下面会一一介绍这些操作法. ...

  6. tcp_sync_server and tcp_sync_client

    #include <iostream> #include <fstream> #include <sstream> #include <boost/asio. ...

  7. LeetCode - 627. Swap Salary

    Given a table salary, such as the one below, that has m=male and f=female values. Swap all f and m v ...

  8. uboot之位置无关代码解析

    在之前的话 新年过去了,那么久没有好好学习,感觉好颓废,现在就uboot的一些基础问题做一些笔记,顺便分享给大家,不过由于见识有限,如果有不足之处请多多指教. 位置无关?什么意思?我们先了解一些基础知 ...

  9. youtube视频字幕下载

    视频下载 安装TamperMonkey插件 字幕下载 http://mo.dbxdb.com/setting.html https://zhuwei.me/y2b/

  10. Java经典编程题50道之二十八

    对10个数进行排序. public class Example28 {    public static void main(String[] args) {        int[] s = { 5 ...