C++ 类学习笔记 :: 作用域限定符
类与封装的概念:
1、类:
类的实现、类的使用。
当使用类的时候,不需要关心实现的细节。当创建类的时候,才需要考虑到内部具体的实现细节。
2、类的封装:
成员变量,C++用于表示属性的变量。
成员函数,C++中用于表示类的行为的函数。
3、pubic、private关键字。(使得变量和函数有了访问权限)
pubic:成员变量和成员函数。可以在类的外部被访问。
private:成员变量和成员函数,只可以在内部被访问。
4、类成员的作用域:
类成员的作用域只在类的内部,外部无法直接访问。(可以通过定义对象的方式进行访问)
成员函数可以直接访问成员变量和调用成员函数。
类的外部可以通过类变量访问public成员。
类的作用域与访问权限无关
5、struct 与class 不同之处
C++中struct定义的类中所有的成员默认为public
class定义的类中左右的成员默认为private
实验:写出一个四则运算的类。
1、 calculate.h(头文件,用于定义类)
#ifndef __CALCULATE_H
#define __CALCULATE_H class calculate
{
private:
char symbol;
double val_laft;
double val_right;
public:
bool get_symbol(char op);
void get_val(double latf,double right);
bool result(double &r); }; #endif
2、创建calculate.cpp (源文件,具体实现)
#include "calculate.h" bool calculate::get_symbol(char op)
{
if(op == '+' || op == '-' || op == '*'|| op == '/')
{
symbol = op;
return true;
}else
{
return false;
}
} void calculate::get_val(double latf,double right)
{
val_laft = latf;
val_right = right;
} bool calculate::result(double &r)
{
bool ret = true;
switch(symbol) {
case '/':
if(val_right == )
ret = false;
else r = val_laft/val_right;
break;
case '*':
r = val_laft*val_right;
break;
case '+':
r = val_laft+val_right;
break;
case '-':
r = val_laft-val_right;
break;
default:
ret = false;
break;
} return ret;
}
3、创建主函数:
#include <stdio.h>
#include "calculate.h" int main(int argc, char *argv[])
{
double r;
calculate test;
test.get_symbol('/');
test.get_val(,);
if( test.result(r) )
{
printf("r = %lf\n",r);
}
else printf("calculate error\n");
return ;
}
4、编译: g++ main.cpp calculate.cpp
5、运行结果:
r = 2.000000
C++中 ::作用域限定符
表示作用域,和所属关系。
比如一个A类:
存在一个函数test是属于A的,如下:
关于::的具体解析:
::是运算符中等级最高的,它分为三种:
1)global scope(全局作用域符),用法(::name)。
2)class scope(类作用域符),用法(class::name)。
3)namespace scope(命名空间作用域符),用法(namespace::name)。
都是左关联(left-associativity),作用都是为了更明确的调用想要的变量。
如在程序中的某一处想调用全局变量a,那么就写成::a,如果想调用class A中的成员变量a,那么就写成A::a,另外一个如果想调用namespace std中的cout成员,就写成std::cout意思是在这里想用cout对象是命名空间std中的cout。
扩展资料:
C++中"std::":
std是一个类(输入输出标准),它包括了cin成员和cout成员,using name space std ,以后才能使用它的成员。其工作原理:
程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。
C++ 类学习笔记 :: 作用域限定符的更多相关文章
- System类学习笔记
最近在学习源码的过程中发现:很多深层次的代码都用到了一个类System类,所以决定对System类一探究竟 本文先对System类进行了剖析,然后对System类做了总结 一.首先对该类的中的所有字段 ...
- php作用域限定符
双冒号::被认为是作用域限定操作符,用来指定类中不同的作用域级别.::左边表示的是作用域,右边表示的是访问的成员. 系统定义了两个作用域,self和parent.self表示当前类的作用域,在类之外的 ...
- C++作用域限定符:private/public与protected
C++的作用域限定符其实涉及到了C++特性中的封装和继承. public/private:涉及类的封装特性.对于一个类需要对外展示的部分,我们可以将其声明为public,对于不希望对外展示的,我们将其 ...
- SQL反模式学习笔记11 限定列的有效值
目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...
- zt C++ list 类学习笔记
C++ list 类学习笔记 分类: C++ 2011-09-29 00:12 7819人阅读 评论(0) 收藏 举报 listc++iteratorvectorcconstructor 双向循环链表 ...
- GUI学习之五——QAbstractButton类学习笔记
今天总结一下AbstractButton类的学习笔记. 一.描述 AbstractButton是对各种按键的抽象类他的继承关系是这样的 首先,QAbstractButton继承了QWidget类的各种 ...
- typescript类(学习笔记非干货)
我们声明一个 Greeter类.这个类有3个成员:一个叫做greeting的属性,一个构造函数和一个greet方法. We declare a Greeter class. This class ha ...
- 批处理学习笔记6 - 重定向符>和>>
重定向符大概有6,7种,和%符号差不多各有各的用途.这里学习>和>> > 是左边的值把右边的值覆盖 >> 是左边的值添加在右边的值上面 rem 是批处理的注释,类 ...
- Android笔记:限定符
屏幕特征限定符描述大小 small 提供给小屏幕设备的资源 normal 提供给中等屏幕设备的资源 large 提供给大屏幕设备的资源 xlarge 提供给超大屏幕设备的资源分辨率 ldpi 提供给低 ...
随机推荐
- RabbitMQ消费端限流策略(十)
消费端限流: 什么是消费端限流? 场景: 我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么 ...
- 自定义ItemDecoration设置分割线
说道ItemDecoration不得不说三个方法: /** * @param c 画布 * @param parent RecyleView * @param state RecyclerView的当 ...
- 20175215 2018-2019-2 第二周java课程学习总结
一.学生免费申请使用IDEA 下载好IDEA后,设置到最后有一个界面, 我们需要到IDEA官网进行IDEA免费试用权的申请,如果有学校的邮箱,使用学校的邮箱注册并证明是自己的就可以直接通过申请.如下图 ...
- Windows10无法打开NVIDA控制面板
今天开机,突然发现NVIDA控制面板无法打开,在桌面右键启动nView Desktop Manager,点击启动,发现也无法启动控制面板,并且提示[您当前未使用连接到nvidia gpu的显示器].查 ...
- 请描述一下 BroadcastReceiver?
BroadCastReceiver 是 Android 四大组件之一,主要用于接收系统或者 app 发送的广播事件. 广播分两种:有序广播和无序广播. 内部通信实现机制:通过 Android 系统的 ...
- [VBA]合并工作簿优化版
Sub 合并工作簿数据()Dim arrDim i As Integer, j As Integer, x As IntegerDim f As String, m As String, n As S ...
- React之父子组件之间传值
1.新增知识点 /** React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. 父子组件:组件的相互调用中,我们把调 ...
- JAVA 内存的那些事
(转载)固然Java屏蔽了一下内存细节,但是有时候,了解一下这些常识还是有好处的,特别是一些口试,总是盯着这些玩意不放手. JVM启动以后,会分配两类内存区域,一类用于开发职员使用,比如保存一些变量, ...
- Word2007—如何快速取消自动编号
有时候自动编号很麻烦,有没有好的办法可以快速取消呢. 1.禁止自动编号.在Word为其自动加上编号时,只要按下Ctrl+Z键撤销操作,此时自动编号会消失,而且每次键入数字时,该功能就会被禁止了. 2. ...
- 清晰理解redux中的
首先需要明白 Redux 的单一状态树的概念,所谓的单一状态树,就是指“所有的 state 都以一个对象树的形式储存在一个单一的 store 中.” 比如我们有这么一个状态树(或者你叫它状态对象也行) ...