栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

类和对象初阶

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类和对象初阶

//类和对象:

//与C语言中的结构体有些相似,不过相比结构体有所升级,结构体中只能存放成员变量,类可以同时存放成员变量和成员函数

//用类定义出来的变量称为对象,也称类对象

 

//类:是一个标准,类里面可以规定这个类中包含那些成员函数和成员变量,一旦规定,定义的类对象中也会有相应的成员变量

//成员函数是统一放到一个公共代码区的地方,每个对象调用的函数都是同一个函数,地址是一样的,但是每个对象中的成员变量是不一样的

 

 

 

//类关键字:一般用struct或者class来定义一个类

 

 

//struct 和 class的区别:C++兼容C语言中的struct,struct和class都可以用来定义类,但是有一个区别:

//struct定义的类默认可以被类外访问,即是公有的,class定义的类默认不能被类外访问,即是私有的

 

 

//类限定符:public,private,protected

//public:被public修饰的部分是公有的,可以被类外访问,作用的范围从public到下一个限定符,若没有下一个限定符,则到类结束

//private:被private修饰的部分是私有的,不可以被类外访问,作用的范围从private到下一个限定符,若没有下一个限定符,则到类结束

//protected:被protected修饰的部分是私有的,不可以被类外访问,作用的范围从protected到下一个限定符,若没有下一个限定符,则到类结束

 

//类作用域:从定义类开始到定义类结束的范围

 

 

//域限定符::: 两个冒号,可以限定是哪个域里面的,这个一般在函数的声明和定义分开是可以用到

 

 

//写一个栈类

//定义一个栈类

class Stack

{

public:

 //成员函数的声明

 //初始化

 void Init();

 //插入

 void Push(int x);

 //删除

 void Pop();

 //取栈顶元素

 int Top();

 //计算栈中元素个数

 size_t Size();

 //销毁栈

 void Destroy();

 

 

private:

 

 //成员变量

 int* _a;

 int _top;

 int _capacity;

};

 

//成员函数的定义

 //初始化

void Stack::Init()

{

 _a = nullptr;

 _top = _capacity = 0;

}

//插入

void Stack::Push(int x)

{

 if (_top == _capacity)

 {

  int capacity = _capacity == 0 ? 4 : _capacity * 2;

  int* tmp = (int*)malloc(sizeof(int) * capacity);

  if (tmp == nullptr)

  {

   printf("malloc failn");

   return;

  }

  _a = tmp;

  _capacity = capacity;

 }

 _a[_top++] = x;

}

//删除

void Stack::Pop()

{

 if (_top <= 0)

 {

  return;

 }

 _top--;

}

//取栈顶元素

int Stack::Top()

{

 if (_top <= 0)

 {

  return -1;

 }

 return _a[_top - 1];

}

//计算栈中元素个数

size_t Stack::Size()

{

 return _top;

}

//销毁栈

void Stack::Destroy()

{

 free(_a);

 _a = nullptr;

 _top = _capacity = 0;

}

 

 

int main()

{

 

 Stack st;

 st.Init();

 st.Push(1);

 cout << "栈顶元素为:";

 cout << st.Top() << endl;

 cout << "栈中的元素个数为:";

 cout << st.Size() << endl;

 st.Pop();

 cout << "栈中的元素个数为:";

 cout << st.Size() << endl;

 st.Destroy();

 

 return 0;

}

 

 

 

//计算类对象的大小:三种情况

//类对象中成员函数和成员变量均存在:需要按照内存对齐进行计算

//类对象中只有成员函数没有成员变量:大小为1字节

//类对象中既没有成员函数也没有成员变量:大小为1字节

 

 

//写一个日期类

 

 

class Date

{

public:

 //成员函数

 void Init(int year, int month, int day);

 void Print();

 

private:

 //成员变量

 int _year;

 int _month;

 int _day;

};

 

//日期函数的定义

 

void Date::Init(int year, int month, int day)

{

 _year = year;

 _month = month;

 _day = day;

}

 

void Date::Print()

{

 cout << "今天是:";

 cout << _year << "-" << _month << "-" << _day << endl;

}

 

void TestDate()

{

 Date d;

 d.Init(2022, 6, 3);

 d.Print();

 

}

int main()

{

 //TestStack();

 TestDate();

 return 0;

}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947716.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号