網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、類的關(guān)鍵字
- struct 在 C 語(yǔ)言中已經(jīng)有了自己的含義,必須繼續(xù)兼容
- 在C++ 中提供了新的關(guān)鍵字 class 用于類定義
- class 和 struct 的用法是完全相同的
- 在用 struct 定義類時(shí),所有成員的默認(rèn)訪問(wèn)級(jí)別為 public
- 在用 class 定義類時(shí),所有成員的默認(rèn)訪問(wèn)級(jí)別為 private
如下:
下面看一段使用 class 的代碼:
#include <stdio.h>
struct A
{
// defualt to public
int i;
// defualt to public
int getI()
{
return i;
}
};
class B
{
// defualt to private
int i;
// defualt to private
int getI()
{
return i;
}
};
int main()
{
A a;
B b;
a.i = 4;
printf("a.getI() = %d\n", a.getI());
b.i = 4;
printf("b.getI() = %d\n", b.getI());
return 0;
}
下面為輸出結(jié)果,運(yùn)行報(bào)錯(cuò),指出 class 聲明的類,所有成員的默認(rèn)訪問(wèn)級(jí)別為 private
在 class B 里面加個(gè) public 即可,如下:
class B
{
public:
// defualt to private
int i;
// defualt to private
int getI()
{
return i;
}
};
下面為輸出結(jié)果:
二、類的真正形態(tài)
C++ 中的類支持聲明和實(shí)現(xiàn)的分離
將類的實(shí)現(xiàn)和定義分開(kāi)
- .h頭文件中只有類的聲明
- 成員變量和成員函數(shù)的聲明
- .cpp源文件中完成類的其它實(shí)現(xiàn)
- 成員函數(shù)的具體實(shí)現(xiàn)
三、小實(shí)例
需求:開(kāi)發(fā)一個(gè)用于四則運(yùn)算的類
提供 setOperator 函數(shù)設(shè)置運(yùn)算類型
提供 setParameter 函數(shù)設(shè)置運(yùn)算參數(shù)
提供 result 函數(shù)進(jìn)行運(yùn)算
- 其返回值表示運(yùn)算的合法性
- 通過(guò)引用參數(shù)返回結(jié)果
代碼如下:
Operator.h
#ifndef _OPERATOR_H_
#define _OPERATOR_H_
class Operator
{
private:
char mOp;
double mP1;
double mP2;
public:
bool setOperator(char op);
void setParameter(double p1, double p2);
bool result(double& r);
};
#endif
Operator.cpp
#include "Operator.h"
bool Operator::setOperator(char op)
{
bool ret = false;
if( (op == '+') || (op == '-') || (op == '*') || (op == '/') )
{
ret = true;
mOp = op;
}
else
{
mOp = '\0';
}
return ret;
}
void Operator::setParameter(double p1, double p2)
{
mP1 = p1;
mP2 = p2;
}
bool Operator::result(double& r)
{
bool ret = true;
switch( mOp )
{
case '/':
if( (-0.000000001 < mP2) && (mP2 < 0.000000001) )
{
ret = false;
}
else
{
r = mP1 / mP2;
}
break;
case '+':
r = mP1 + mP2;
break;
case '*':
r = mP1 * mP2;
break;
case '-':
r = mP1 - mP2;
break;
default:
ret = false;
break;
}
return ret;
}
test.cpp
#include <stdio.h>
#include "Operator.h"
int main()
{
Operator op;
double r = 0;
op.setOperator('/');
op.setParameter(9, 3);
if( op.result(r) )
{
printf("r = %lf\n", r);
}
else
{
printf("Calculate error!\n");
}
return 0;
}
下面為輸出結(jié)果:
四、小結(jié)
C++ 引進(jìn)了新的關(guān)鍵字 class 用于定義類
struct 和 class 的區(qū)別在于默認(rèn)訪問(wèn)級(jí)別的不同
C++ 中的類支持聲明和實(shí)現(xiàn)的分離
- 在頭文件中聲明類
- 在源文件中實(shí)現(xiàn)類
原文鏈接:https://blog.csdn.net/weixin_43129713/article/details/123097005
相關(guān)推薦
- 2022-12-07 React?Context?變遷及背后實(shí)現(xiàn)原理詳解_React
- 2022-06-14 利用Python?NumPy庫(kù)及Matplotlib庫(kù)繪制數(shù)學(xué)函數(shù)圖像_python
- 2022-11-02 Mango?Cache緩存管理庫(kù)TinyLFU源碼解析_Golang
- 2022-07-19 linux臨時(shí)修改網(wǎng)卡
- 2022-05-23 SQL?CASE?表達(dá)式的具體使用_MsSql
- 2022-04-28 Python模塊pexpect安裝及使用流程_python
- 2023-01-11 C++入門教程之引用與指針_C 語(yǔ)言
- 2022-05-07 Python真題案例之蛇形數(shù)組詳解_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支