嵌入式linux基础:c++(一)类的引入

简介: 嵌入式linux基础:c++(一)类的引入

1.类的引入


C语言是面向过程的 出一道题:

写一个程序,输出张三,李四两个人的姓名,年龄。

#inlude <stdio.h>
int main(int argc,char **argv)//多维数组的地址,行转化列
{
  char *zs_name = "zhangsan";
  int zs_age =10; 
  char *ls_name = "lisi";
  int ls_age =10; 
  printf("name = %s,age = %d\n",zs_name,zs_age);
  printf("name = %s,age = %d\n",ls_name,ls_age);
  return 0;
}


改进一下: 写一个程序,输出成百上千人的姓名,年龄。

#include <stdio.h>
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;
}


再改进,利用指针,结构体。

#include <stdio.h>
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;
}


能不能再改进?

#include <stdio.h>
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;
}


这样就相对优雅一点,再C++中对struct做了两个扩展:

第一,可以直接在结构体中写出函数。

第二,这个函数可以直接访问结构体里面的这些属性。


所以就借此把struct定义为一个新的类别:class。

#include <stdio.h>
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.多态

相关文章
|
1月前
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
86 0
|
1月前
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
72 1
Linux C/C++之IO多路复用(aio)
|
4天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
21 4
|
5天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
18 4
|
28天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
24 4
|
28天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
20 4
|
28天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
19 1
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
254 3
|
1月前
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
26 0
Linux C/C++之线程基础
|
1月前
|
Linux C++
Linux C/C++之IO多路复用(poll,epoll)
这篇文章详细介绍了Linux下C/C++编程中IO多路复用的两种机制:poll和epoll,包括它们的比较、编程模型、函数原型以及如何使用这些机制实现服务器端和客户端之间的多个连接。
23 0
Linux C/C++之IO多路复用(poll,epoll)