C++学习第一天---类和对象
结构体和类的比较:
1、C语言:
#includeusing 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 #includeusing 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;
}
类是模板,只是告诉编译器有这么个数据类型,编译器并不会为类分配存储空间
当用类定义类变量时,即对象,编译器就会为对象分配内存空间