在之前学习的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. UOJ #207. 共价大爷游长沙 [lct 异或]

    #207. 共价大爷游长沙 题意:一棵树,支持加边删边,加入点对,删除点对,询问所有点对是否经过一条边 一开始一直想在边权上做文章,或者从连通分量角度考虑,比较接近正解了,但是没想到给点对分配权值所以 ...

  2. VUE2.0 elemenui-ui 2.0.X 封装 省市区三级

    1. 效果图 2. 版本依赖  vue 2.X , elementui  2.0.11  使用element ui  <el-form>标签 3. 源码  components/CityL ...

  3. Windows Azure Virtual Network (11) 虚拟网络之间点对点连接VNet Peering

    <Windows Azure Platform 系列文章目录> 在有些时候,我们需要通过VNet Peering,把两个虚拟网络通过内网互通互联.比如: 1.在订阅A里的Virtual N ...

  4. 在Arrays.asList()引发的问题中进一步学习集合与泛型等内容

    前言 最近在网上看到一个问题,情况类似如下(记为问题1): public class Demo { public static void main(String[] args) { System.ou ...

  5. 03-PHP-memcached

    [安装memcached] [安装 libevent] $ tar zxvf libevent-2.0.20-stable.tar.gz $ cd libevent-2.0.20-stable/ $ ...

  6. 织梦去除tag标签url中的问号

    找到文件 include\taglib\tag.lib.php  大概87行 把 $row['link'] = $cfg_cmsurl."/tags.php?/".urlencod ...

  7. 平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。

    题目:平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小. 源码如下: #include <iostream> #include <string.h> #incl ...

  8. 940D Alena And The Heater

    传送门 题目大意 给出两个长度为N的数组A,B,以及一种计算规律: 若t[i]=1,需满足t[i-1]=t[i-2]=t[i-3]=t[i-4]=0,以及max{A[i],A[i-1],A[i-2], ...

  9. python 列表去重(数组)的几种方法(转)

    一.方法1  代码如下 复制代码 ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ids:     if id not in news_id ...

  10. Selenium常用方法及函数、txt参数化

    常用方法及函数: 1.表单的提交方法:submit解释:查找到表单(from)直接调用submit即可实例:driver.find_element_by_id("form1").s ...