云计算百科
云计算领域专业知识百科平台

C++类和对象

类和对象

类和对象(上)

类的对象

类定义个格式

class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。

为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加_或者m开头,注意C++中这个并不是强制的,只是一些惯例,具体看公司的需求。

C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是struct中可以定义函数,一般情况下我们还是推荐用class定义类

定义在类里面的成员函数默认为inline。

访问限定符

public修饰的成员在类外可以直接被访问;protect和private修饰的成员在类外不能直接被访问,protect和private是一样的,以后继承章节才能体现他们的区别。
访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现为止,如果后面没有访问限定符,作用域就到}即类结束。
class定义成员没有被访问限定符修饰时默认为private,struct默认为public。如图所示
####类域
类定义了一个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要使用::作用域操作符指明成员属于哪个类域。
类域影响的是编译的查找规则,下面程序中Init如果不指定类域Stask,你们编译器就会把Init当成全局函数,那么编译时,找不到array等成员的声明/定义在哪里,就会报错。指定类域Stack,就是知道Init时成员函数,当前域找不到的array等成员,就会到类域中去查找。

#include<iostream>
using namespace std;

class Stack
{
public:
//成员函数
void Init(int n=4);
private:
//成员变量
int* array;
size_t capacity;
size_t top;
};
void Stack::Init(int n)
{
array=(int*)malloc(sizeof(int)*n);
if(nullptr==array)
{
perror("malloc申请空间失败“);
return;
}
capacity = n;
top=0;
}
int main()
{
Stack st;
st.Init();
retrun 0;
}

赞(0)
未经允许不得转载:网硕互联帮助中心 » C++类和对象
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!