结构体与类


类与结构体 类与封装

本章讲授的主要内容是C++中的类的定义以及与结构体的对比。

C++是C语言的超集,是对C语言的完全兼容。

C语言是一门面向过程的语言,而C++则是多范式语言,而面向对象是其基本范式。在C语言中,使用结构体来模拟面向对象编程的思想,因此在C++中,对结构体struct这个关键字做了语义的扩展,直接将其等价定义为类class。C++中类的关键词是class而结构体structclass唯一的区别在于成员的默认权限不同,默认情况下,class成员的权限为privatestruct成员的权限为public

这也是二者的唯一区别。

struct

C++中的struct就是类,成员变量访问权限为public的类,并且能与C++的原生类class 混用(不推荐)

#include 

struct Node{
  int value;
  Node(int val = 0):value(val){ }
  ~Node(){}
  void showValue(){
      cout<value 通过对象指针访问对象成员
  }
};

using namespace std;
int main(){
  
  //定义在栈中的node对象,调用了默认构造函数
  Node node;
  node.value = 12;
  //struct 类,成员默认是public访问权限
  cout<

类的定义与实现可以拆分,通常将类的声明源码写在.h文件中,该文件可以四处#include ,根据编译原理,声明时是不会生成符号的,因此也不会出现重定义这样的问题。而将类的实现源码写在.cpp文件中。

//Node.h
#pragram once
struct Node{
    int value;
    Node(int v = 0);
    ~Node();
    void showValue();
};
//Node.cpp
#include 
#include "Node.h"
using namespace std;
Node::Node(int val):value(val){}
void Node::showValue(){
    cout<

class

在C++中,classstruct唯一不同的是,默认情况下,class的成员访问权限是private的(私有)

在面向对象语言的世界中,类的成员以及成员函数通常都有3个层次的访问权限,分别是:

  • private
  • protect
  • public

这三者的权限是依次放开的,private的访问权限最严,只有类本身内部能访问,其外部以及其子类都无法访问,而protect次之,类本身及其子类能访问,public则无权限限制,无论类内部外部还是其子类,均能正常访问。

#include 
using namespace std;
class Node{
    int value;
    void showValue(){
        cout<
#include 
using namespace std;
class Node{
public:
    int value;
    void showValue(){
        cout<
#include 
using namespace std;
class Node{
public:
    int value;
    void showValue();
};

void Node::showValue(){
    cout<

今天的内容主要就是类与结构体的一些对比,以及简单的访问权限。