写点什么

c++ 笔记——类

发布于: 2020 年 10 月 13 日
c++笔记——类

对于这样的定义是放在.h文件里面

class Human
{
public:
char eyebrow[20];
private:
int eye;
char nose[20];
char mouth[20];
public:
void walk();
void think();
void use();
}

对于这样一个类,

如果是在栈中创建的:Human human;

堆中创建的:Human *p = new Human();(是需要在堆上new出一块空间)


1 在栈上操作

对于一个类撰写和定义,可以这么说,应该分为两个部分

一个是关于 .h文件

#include<iostream>
using namespace std;
class Human
{
public:
void setAge(int age);
int getAge();
void setSex(int sex);
int getSex();
private:
int age;
int sex;
Human()
{
cout << "construct human...." << endl;
age = 0;
sex = 0;
};
~Human()
{
cout <<"destruct human..." << endl;
}
};

另一个部分 .cpp文件,是对 .h文件的具体的展示

#include "Human.h"
Human::Human(){}
Human::~Human(){}
void Human::setAge(int a)
{
age = a;
}
int Human::getAge()
{
return age;
}
void Human::setSex(int s)
{
sex = s;
}
int Human::getSex()
{
return sex;
}

接着就是主函数的调用

#include <iostream>
#include "Human.h"
using namespace std;
int main()
{
Human human;
int a = 10, b = 1;
human.setAge(a);
human.setSex(b);
cout <<"human is "<<human.getAge()<<", human is "<< human.getSex()<<endl;
return 0;
}

使用g++进行编译

g++ -std=c++11 -g -o class Human.cpp class.cpp

-o是输出,输出的名字是class,使用是c++11的标准库

从析构函数上来看,在函数结束后,进行自动销毁。

2 在堆上操作

在堆上操作,则是定义Human上使用 Human *human = new Human();

human->setAge(a);
human->setSex(b);
cout <<"human is "<<human->getAge()<<", human is "<< human->getSex()<<endl;



3 补充

堆空间和栈空间

堆空间:从低地址到高地址 new和delete

栈空间:从高地址向低地址存储

两边向中间增加地址块



发布于: 2020 年 10 月 13 日阅读数: 41
用户头像

一个孤独的撰写者 2020.07.30 加入

主攻云计算、云安全,c++、python、java均有涉猎

评论

发布
暂无评论
c++笔记——类