分类标签归档:C++

C++中的class ,struct,union


三者异同

class和struct没有什么区别,都可以包含成员函数,可以继承,可以实现多态等等,不同之处如下:

 class 默认是private struct 默认是public
 class 继承后,默认成员访问是private,struct 继承也是public
 如果定义了构造函数,二者都不能使用大括号进行初始化,如果没有构造函数,struct可以用{}初始化,class 只有当所有成员都是public的时候才能使用{}进行初始化。
 C和 C++中的union: 
    一种数据结构,在C中是一个结构体,在C++中是一个类,可以有访问权限,成员函数,成员变量,构造和析构。
    

Read more

::范围解析运算符和 namespace


::范围解析运算符

  1. ::可以作为全局作用域符。用于类型名称前,如在程序中的某一处你想调用全局变量a,那么就写成::a;(也可以是全局函数)
  2. 类作用域符: 用于表示指定类型的作用域范围是具体某个类,如果想调用class A中的成员变量a,那么就写成A::a;
  3. 命名空间作用域符:用于表示指定类型的作用域范围是具体某个命名空间。如std::cout

namespace命名空间

介绍

命名空间是定义一种新的声明区域来创建命名的名称空间。

用途

这样目的之一是提供一个声明名称的区域,一个名称空间中的名称不会另一个名称空间的相同名称发生冲突,同时允许程序的其他部分使用该名称空间中的东西

使用using

Read more

volatile ,assert,inline和sizeof


volatile

介绍

volatile 是指从内存中读取变量数据,防止编译器在处理过程中进行优化。 可以与const连用,例如只读状态寄存器,可以与指针连用,例如:中断服务子程序修改一个指向buffer的指针。

用途

中断服务程序提供给子程序的检测的变量
多任务系统运行时候共享的变量。
存储器映射的硬件寄存器也要加,一般来说不同的读写意义不一样。
在多线程中使用的变量,可以使用volatile,但是不建议用,一般建议使用锁或者原子操作。如果了多个线程使用一个变量的时候,如果不使用volatile。可能这个变量在内存中,也可能被加入到寄存器中,这样使用的不同变量。使用volatile 意思是让

Read more

static 和this 指针


static

介绍

static 是修饰静态变量的关键字,可以修饰函数和变量,使他成为静态函数和静态变量,一般存储在静态区。静态全局变量和普通全局变量一般并无差别,只有作用域的差别,静态全局变量仅在本文件中有效,非静态全局可以通过extern , 一般来说,全局静态变量存储在data和BSS区,其中data区存放已经实例化的全局变量和静态变量。 BSS初始值为0,在程序结束的时候 自动释放,其中BSS段在程序执行之前被自动清0,存储在静态数据区的变量会在程序开始时完成唯一一次初始化。

机制

静态数据成员在一开始的时候必须存在,因为函数在程序中运行,所以静态数据成员不能再任何函数内分配空间和

Read more