c++初级 之 类的基本认识

以狗类为例认识类

Dog.h

/*
Dog.h用来声明类
*/

#include<iostream>
using namespace std;//一般.h文件只声明不定义,不需要这个头文件,但是这里为了举例类内定义成员函数,要用到该头文件的函数

class Dog  //关键字和类名
{
public:    //暴露的成员和函数
	//数据成员(属性)
	char name[20];
	int age;

	//成员函数(方法)
	void speak()  //在类中定义成员函数
	{
		cout << name << ":wangwang" << endl;	
	}
	void run();

private:     //隐藏的成员和函数
	int weight;
	 
	void eating();
};
/*dog不止这些属性和方法,但把其他细节封装隐藏起来,只露出用户关心的内容。
但如果罗列出了所有内容,那么用户如何把关心内容暴露出来,其他内容隐藏起来呢?
这就要用到 访问限定符public(公共的),protected(受保护的),private(私有的)。这就是封装
*/

Dog.cpp

//在类外并且是分文件定义成员函数(才是正规办法;唯一例外,在vs编译环境中,类模板的成员函数不能分开到.h和.cpp两个文件里,应该都写到.h里,否则编译无法通过)

#include"Dog.h"
#include<iostream>
using namespace std;
void Dog::run()  
{
	cout << name << " run" << endl;
	eating();//私有成员在类内可以使用
}
void Dog::eating()
{
	cout << "eat" << endl;
	weight = 1;
}

demo.cpp

#include<iostream>
#include<stdlib.h>
#include"Dog.h"  //""是自己编的文件。<>是系统的文件
using namespace std;

int main()
{
	//从栈中实例化一个对象
	Dog d1;
	Dog d2[10];
	d1.age = 1;
	strcpy(d1.name,"acai");
	d1.run();
	d1.speak();//调用了这4个公有成员
	//从堆中实例化一个对象(new和delete)
	Dog *q = new Dog(); //在new一个类的对象时,若类里没有自己定义默认构造函数,那么加括号()对象的值会初始化为0,不加()不初始化。否则不管加不加()都会根据构造函数被初始化。
	Dog *p = new Dog[20];
	//记得考虑申请失败的情况!
	if (q == NULL){
		return 0;
	}
	if (p == NULL){
		return 0;
	}

	//赋初值
	q->age = 2;
	strcpy(q->name,"yellow");
	strcpy(p[0].name,"black");
	p[0].run();
	//释放内存
	delete q;
	delete []p;
	p = NULL;
	q = NULL;
	system("pause");
	return 0;
}
结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值