• C++_面向对象的引入


    C++_面向对象的引入

    前言:C语言过度到C++
    下面从打印人的姓名和年龄为切入点

    1、初学C语言时候的写法
    注意:当需要打印很多人的信息的时候,需要列举非常多

    #include 
    
    int main(int argc, char **argv)
    {
    	char *zs_name = "zhangsan";
    	int zs_age = 10;
    
    	char *ls_name = "lisi";
    	int ls_age = 16;
    
    	printf("name = %s, age = %d\n", zs_name, zs_age);
    	printf("name = %s, age = %d\n", ls_name, ls_age);
    	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2、使用数组存储多个人的信息
    注意:属性越多增加的数组就越多,比如加入工作

    
    #include 
    
    int main(int argc, char **argv)
    {
    	char *names[] = {"zhangsan", "lisi"};
    	char ages[] = {10, 16};
    	char *work[] = {"teacher", "doctor"};
    	
    	int i;
    
    	for (i = 0; i < 2; i++)
    	{
    		printf("name = %s, age = %d\n", names[i], ages[i]);	
    	}
    	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3、引入C语言的结构体
    注意:对于打印每个人的信息,引用的时候还是比较别扭的(persons[0].printInfo(&persons[0]);)有点让人不太好理解,后面向C++过度

    #include 
    
    struct person {
    	char *name;
    	int age;
    	char *work;
    
    	void (*printInfo)(struct person *per);
    };
    
    void printInfo(struct person *per)
    {
    	printf("name = %s, age = %d, work = %s\n", per->name, per->age, per->work);	
    }
    int main(int argc, char **argv)
    {
    	struct person persons[] = {
    		{"zhangsan", 10, "teacher", printInfo},
    		{"lisi", 16, "doctor", printInfo},
    	};
    	
    	persons[0].printInfo(&persons[0]);
    	persons[1].printInfo(&persons[1]);
    	
    	return 0;
    }
    
    • 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

    4、C++是在C的基础上变形而来的(对结构体扩展),类的核心就是结构体
    注意这里是person5.cpp文件,这样编译或许有很多警告,但是可以编译通过的

    #include 
    
    struct person {
    	char *name;
    	int age;
    	char *work;
    
    	void printInfo(void)
    	{
    		printf("name = %s, age = %d, work = %s\n", name, age, work); 
    	}
    };
    
    int main(int argc, char **argv)
    {
    	struct person persons[] = {
    		{"zhangsan", 10, "teacher"},
    		{"lisi", 16, "doctor"},
    	};
    	
    	persons[0].printInfo();
    	persons[1].printInfo();
    	
    	return 0;
    }
    
    • 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

    5、正式转到C++
    注意:把struct换成class,并给内部参数添加属性(public)

    #include 
    
    class person {
    public:
    	char *name;
    	int age;
    	char *work;
    
    	void printInfo(void)
    	{
    		printf("name = %s, age = %d, work = %s\n", name, age, work); 
    	}
    };
    
    int main(int argc, char **argv)
    {
    	struct person persons[] = {
    		{"zhangsan", 10, "teacher"},
    		{"lisi", 16, "doctor"},
    	};
    	
    	persons[0].printInfo();
    	persons[1].printInfo();
    	
    	return 0;
    }
    
    • 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
  • 相关阅读:
    flutter系列之:flutter中常用的GridView layout详解
    低代码平台前端的设计与实现(四)组件大纲树的构建设计
    Windows 图像处理组件(WIC)读写位深度24位的 bmp 文件
    linux环境下安装运行环境JDK、Docker、Maven、MySQL、RabbitMQ、Redis、nacos、Elasticsearch
    Java Fasn 带您谈谈——开源、闭源
    虚拟键盘MindFusion.Virtual Keyboard for WinForms 5.0.2
    串口收发UART(Verilog HDL)
    论文阅读笔记MixFormer: Mixing Features acrossWindows and Dimensions
    企业微信、飞书、钉钉机器人消息发送工具类
    Bootstrap框架
  • 原文地址:https://blog.csdn.net/weixin_50183638/article/details/126141701