类与封装的概念:

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++ 类学习笔记 :: 作用域限定符的更多相关文章

  1. System类学习笔记

    最近在学习源码的过程中发现:很多深层次的代码都用到了一个类System类,所以决定对System类一探究竟 本文先对System类进行了剖析,然后对System类做了总结 一.首先对该类的中的所有字段 ...

  2. php作用域限定符

    双冒号::被认为是作用域限定操作符,用来指定类中不同的作用域级别.::左边表示的是作用域,右边表示的是访问的成员. 系统定义了两个作用域,self和parent.self表示当前类的作用域,在类之外的 ...

  3. C++作用域限定符:private/public与protected

    C++的作用域限定符其实涉及到了C++特性中的封装和继承. public/private:涉及类的封装特性.对于一个类需要对外展示的部分,我们可以将其声明为public,对于不希望对外展示的,我们将其 ...

  4. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  5. zt C++ list 类学习笔记

    C++ list 类学习笔记 分类: C++ 2011-09-29 00:12 7819人阅读 评论(0) 收藏 举报 listc++iteratorvectorcconstructor 双向循环链表 ...

  6. GUI学习之五——QAbstractButton类学习笔记

    今天总结一下AbstractButton类的学习笔记. 一.描述 AbstractButton是对各种按键的抽象类他的继承关系是这样的 首先,QAbstractButton继承了QWidget类的各种 ...

  7. typescript类(学习笔记非干货)

    我们声明一个 Greeter类.这个类有3个成员:一个叫做greeting的属性,一个构造函数和一个greet方法. We declare a Greeter class. This class ha ...

  8. 批处理学习笔记6 - 重定向符>和>>

    重定向符大概有6,7种,和%符号差不多各有各的用途.这里学习>和>> >  是左边的值把右边的值覆盖 >> 是左边的值添加在右边的值上面 rem 是批处理的注释,类 ...

  9. Android笔记:限定符

    屏幕特征限定符描述大小 small 提供给小屏幕设备的资源 normal 提供给中等屏幕设备的资源 large 提供给大屏幕设备的资源 xlarge 提供给超大屏幕设备的资源分辨率 ldpi 提供给低 ...

随机推荐

  1. CF1213E Two Small Strings

    题目链接 问题分析 由于三个字母是等价的,所以大致可以分为如下几种情况: aa, ab ab, ac ab, ba ab, bc 不难发现,第\(3\)中情况可能造成无解(\(n>1\)时),而 ...

  2. 「CF 961G」Partitions

    题目链接 戳我 \(Solution\) 首先,这个直接推式子.自己推去 所以我们来想一想一些巧妙的方法 \(|S|\sum w_i\) 可以转化为:划分好集合后,每个点都对当前点有\(w_i\)的贡 ...

  3. idea 编译内存溢出

    idea.max.intellisense.filesize=9999 idea.max.content.load.filesize=99999 idea.cycle.buffer.size=disa ...

  4. C++入门经典-例5.15-回收动态内存的一般处理步骤

    1:正确的步骤应该是如下代码所示: // 5.15.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostrea ...

  5. Redis的高可用详解:Redis哨兵、复制、集群的设计原理,以及区别

    谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制. 哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能. ...

  6. [C#菜鸟]C# Hook (三) Windows常用消息大全

    表A-1  Windows消息分布 消息范围 说 明 0 - WM_USER – 1 系统消息 WM_USER - 0x7FFF 自定义窗口类整数消息 WM_APP - 0xBFFF 应用程序自定义消 ...

  7. 代码代码:输入两个正整数m和n,求其最大公约数和最小公倍数。15 20 5

    import java.util.Scanner; //输入两个正整数m和n,求其最大公约数和最小公倍数.15 20 5 public class Test { public static void ...

  8. Color色彩

    Element 为了避免视觉传达差异,使用一套特定的调色板来规定颜色,为你所搭建的产品提供一致的外观视觉感受. ¶主色 Element 主要品牌颜色是鲜艳.友好的蓝色. Blue #409EFF ¶辅 ...

  9. Python线程和协程

    写在前面 好好学习 天天向上 一.线程 1.关于线程的补充 线程:就是一条流水线的执行过程,一条流水线必须属于一个车间: 那这个车间的运行过程就是一个进程: 即一个进程内,至少有一个线程: 进程是一个 ...

  10. 阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解

    编程式的事物控制,使用的情况非常少,主要作为了解 新建项目 首先导入包坐标 复制代码 这里默认值配置了Service.dao和连接池其他的内容都没有配置 也就说现在是没有事物支持的.运行测试文件 有错 ...