类和对象

结构体和类的比较:

1、C语言:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
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++:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
#include <iostream>
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文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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文件定义如下:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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;
 
 
}

  

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

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

 

posted @   念经似的zzz  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示