C++学习第一天---类和对象


结构体和类的比较:

1、C语言:

#include 
using namespace std;


struct Student
{
public:	
	char Name[20];
	int age;
private:
	char id[5];
	char sex[3];
};

void main()
{
	Student  st1;
	st1.age = 10;
}
 

通过上面的代码可以看出,在main函数里给age变量赋值可以编译通过,从中我们可以得出结论:

1、C语言结构体可以使用public private protected关键字修饰限定结构体成员的访问权限,并且结构体不写访问权限修饰符时,默认是public

2、Student st1 表示定义一个结构体变量st1

2、C++:

class Goods
{
public:
	char Name[20];
	int Amount;
	float Price;
	float TOtal_value;
};

void main()
{
	Goods  gd1;
	gd1.Amount = 10;
	gd1.Price = 20;

}

1、类定义可以使用public private protected关键字修饰限定类成员的访问权限,并且类不写访问权限修饰符时,默认是private

2、Goods gd1 表示定义一个类变量gd1,但是C++比C语言高级,我们把类变量起一个高级的名字,叫:对象,即用类定义一个对象

3、定义类的标准模板

  Test.h文件如下:

#pragma once
#include 
using namespace std;
class Goods
{
public:
	void  RegisterGoods(const char[], int, float);
	void CountTotal(void);
	void GetName(char[]);
	int GetAmount(void);
	float GetPrice(void);
	float GetTotal_value(void);
private:
	char Name[21];
	int Amount;
	float Price;
	float Total_value;
};

  Test.c文件如下:

#include "Test.h"

void Goods::RegisterGoods(const char name[], int amount, float price)
{
	strcpy(Name, name);
	Amount = amount;
	Price = price;
}
void  Goods::CountTotal(void)
{
	Total_value = Amount* Price;
}
void Goods::GetName(char name[])
{
	strcpy(name, Name);
}
int Goods::GetAmount(void)
{
	return Amount;
}
float Goods::GetPrice(void)
{
	return Price;
}
float Goods::GetTotal_value(void)
{
	return Total_value;
}

  Main.c文件定义如下:  

#include "Test.h"

void main()
{
	Goods  gd1;
	char name[21];
	int a=1;
	gd1.RegisterGoods("c++", 30,10.0);
	gd1.GetName(name);
	cout << name << endl;
	gd1.CountTotal();
	a = gd1.GetAmount();
	cout << a  << endl;


}

类是模板,只是告诉编译器有这么个数据类型,编译器并不会为类分配存储空间

当用类定义类变量时,即对象,编译器就会为对象分配内存空间