c++-面向对象:类和对象

0
11

类和对象

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h> 


using namespace std;


struct Hero
{
	char name[64];
	int sex;
};

void printHero(struct Hero &h)
{
	cout << "Hero" << endl;

	cout << "name = " << h.name << endl;
	cout << "sex = " << h.sex << endl;
}

class AdvHero
{
public://访问控制权限
	char name[64];
	int sex;

	void printHero()
	{
		cout << "advHero" << endl;
		cout << "name = " << name << endl;
		cout << "sex = " << sex << endl;
	}
};


class Animal
{
	//{}以内 叫类的内部, 以外叫类的外部
public:
	char kind[64];
	char color[64];

//在public下面定义成员变量和函数 是能够在类的内部和外部都可以访问的。
	void printAnimal()
	{
		cout << "kind = " << kind << endl;
		cout << "color = " << color << endl;
	}

	void write()
	{
		cout << kind << "开始鞋子了" << endl;
	}
	void run()
	{
		cout << kind << "跑起来了" << endl;
	}

	//
private:
	//在private下面定义的成员变量和方法只能够在类的内部访问
	
};

int main(void)
{
	Hero h;

	strcpy(h.name, "gailun");
	h.sex = 1;
	printHero(h);



	AdvHero advH;
	strcpy(advH.name, "ChunBro");
	advH.sex = 1;

	advH.printHero();

	cout << "-----------" << endl;
	Animal dog;

	strcpy(dog.kind, "dog");
	strcpy(dog.color, "yellow");

	Animal sheep;

	strcpy(sheep.kind, "sheep");
	strcpy(sheep.color, "white");

	

	dog.write();
	sheep.run();

	return 0;
}

类的封装

一个类类的内部,默认的访问控制权限是private

一个结构体默认的访问控制权限的是public

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

using namespace std;

struct Date
{
	int year;
	int month;
	int day;
};

void init_date(struct Date & d)
{
	cout << "year, month, day" << endl;
	cin >> d.year;
	cin >> d.month;
	cin >> d.day;
}

//打印data的接口
void print_date(struct Date &d)
{
	cout << d.year << "年" << d.month << "月" << d.day << "日" << endl;
}

bool is_leap_year(struct Date &d)
{
	if (((d.year % 4 == 0) && (d.year % 100 != 0)) || (d.year % 400 == 0)) {
		return true;
	}
	return false;
}

class MyDate
{
public:
	//成员方法 成员函数
	void init_date()
	{
		cout << "year, month, day" << endl;
		cin >> year;
		cin >> month;
		cin >> day;
	}

	//打印data的接口
	void print_date()
	{
		cout << year << "年" << month << "月" << day << "日" << endl;
	}

	bool is_leap_year()
	{
		if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
			return true;
		}
		return false;
	}


	int get_year()
	{
		return year;
	}

	void set_year(int new_year)
	{
		year = new_year;
	}

protected://保护控制权限。在类的继承中跟private有区别,在单个类中,跟private是一抹一样。
private:
	int year;
	int month;
	int day;
};

//一个类类的内部,默认的访问控制权限是private
class Hero
{

	int year;
};

//一个结构体默认的访问控制权限的是public
struct Hero2
{
	int year;
	void print()
	{

	}
};

int main(void)
{
#if 0
	Date d1;

	init_date(d1);
	print_date(d1);
	if (is_leap_year(d1) == true) {
		cout << "是闰年 " << endl;
	}
	else {
		cout << "不是闰年 " << endl;
	}
#endif


	MyDate my_date;

	my_date.init_date();

	my_date.print_date();

	if (my_date.is_leap_year() == true)
	{
		cout << "是闰年 " << endl;
	}
	else {
		cout << "不是闰年 " << endl;
	}

	//getter,setter
	cout << my_date.get_year() << endl;
	my_date.set_year(2000);
	cout << my_date.get_year() << endl;

	Hero h;
	//h.year = 1000;

	Hero2 h2;
	h2.year = 100;

	return 0;
}

面向对象和面向过程

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

using namespace std;

class Dog
{
public:
	void eat(char *food)
	{
		cout << name << "³Ô" << food << endl;
	}

	char name[64];
};

//ÃæÏò¹ý³Ì
void eat(class Dog &dog, char *food)
{
	cout << dog.name << "³Ô" << food << endl;
}




int main(void)
{
	Dog dog;

	strcpy(dog.name, "¹·");

	eat(dog, "Ïè");

	dog.eat("Ïè");



	return 0;
}

<

发布回复

请输入评论!
请输入你的名字