标签:输入参数 protect his 关键字 结构体 ota 命名空间 隐藏数据 规则
类其实是一种特殊的结构体(可以暂且这样理解),里面可以包含函数和变量,只不过不同的是类有数据隐藏和抽象,类里面有private(私有的,仅能在当前类中可以看得到,一般情况下数据成员均为private,这种状态是类的一种默认的访问控制),protected,以及public(public为类的公共接口成员,也是当类实例化后可以直接调用的部分)。一般情况下我们不在类的声明中定义函数,且我们一般将类的声明放在头文件中,如果有函数在类中定义都将自动的转换为内联函数(我们也可以在类外面定义内联函数在函数声明前加上 incline 关键字在配上在类定义的规则即可),我们通过inlude类声明所在的头文件,用" : : "来定义函数,例如在类中定义函数 int add(int a,int b),则我们在类外(类的名字是 p)这样定义 int p :: add(int a,int b){........},这样写我们并不陌生在命名空间调用其中的元素时也是这个样子的。我们可以将一个类对象直接赋值给另一个同类对象(就和结构体是一样的),对象想使用方法时和结构体一样用“ . ”运算符,例如stack.add();
构造函数其实是为了给类实例化的对象初始化,当在一个类中如果没有创建构造函数那么在实例化的时候会自动的提供构造函数(默认构造函数的隐式版本),但是如果你创建了一个带有输入参数的构造函数时,你就必须为这个类提供默认构造函数(即不带参数输入的构造函数),下面说一下构造函数的定义(函数名和类的名字一样且没有返回值):
1 //默认构造函数,例如类的名字为stock 2 stock::stock() 3 { 4 //初始化里面的private数据 5 } 6 //带参数构造函数,即用户可以指定privayte数据的大小
如果说构造函数是负责一直到对象被创建时,那么析构函数则是一直跟踪对象至到过期为止,当过期时则自动调用一个特殊的成员函数负责清理的函数:
1 //析构函数 2 stock::~stock() 3 { 4 //若是用new的可以用delete来删除分配的内存 5 }
当类的定义是一个const时其不能任意的调用类方法,因为类方法是对象修改类中数据的一种方式,所以编译器不确定你是否会用类方法去修改,所以会报错,这个时候该对象只能调用const成员函数(即只读取内部数据而不修改的函数),其定义如下:void stock :: show() const;
this指针其实就是指向类本身地址的指针,就像当你身处一个房子中你会看到房子里的很多东西但是却看不到房子本身,而this指针就是起到这个作用,this指针在类中始终的指向该类本身
1 //该方法是为了比较两个对象隐藏数据的大小,最后返回相对大的对象 2 const stock & stock::topval(const stock & s) const 3 { 4 //因为是在类方法中所以可以调用private数据不管是外部对象还是本对象 5 if(s.total_val>total_val) 6 return s; 7 else 8 return *this; 9 }
由于声明类只是描述了对象的形式,并没有创建对象,因此在创建前将没有用于存储的空间,要想给隐藏数据赋值有两种方法就是 :1.通过类方法来实现。2.通过构造函数来实现。但是如果要实现创建类中的常量也不是不可能有以下两种办法:
1.通过声明枚举:enum {months=12};则接下来可以用months来代替12
2.通过在普通的常量声明前加上static。例如:static const int month2=12;该变量将与其他的静态变量储存在一起而不储存在对象中。
标签:输入参数 protect his 关键字 结构体 ota 命名空间 隐藏数据 规则
原文地址:https://www.cnblogs.com/yskn/p/9016270.html