找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

C++的精髓类和继承就该这么理解!

admin 2019-9-9 16:48 86人围观 C++相关

C语言编写开发中,能把面向对象的思想添加进去,可以让代码更加美观,更加简洁,特别是代码复用。要让代码实现《高内聚、低耦合》,这样写代码才比较有意义。

C++基础知识说明,如果你学过C语言,那么基础知识是一样的,比循环、运算符、指针等…。可以说C++是在C的基础上增加了面向对象编程。在C语言中,也可以实现类似面向对象的实现,实现代码的重用。

C++ 类定义

类是面向对象程序设计实现信息封装的基础。类定义以关键字class开头,后跟类名。

以下例子:定义了一个temp类,包含两个成员变量和一个方法函数,main()中,定义temp的对象temp1,然后可以直接访问类中的公有成员。

#include <iostream>

class temp

{

public:

int x;

int y;

int add(int a, int b)

{

return (a + b);

}

};

int main()

{

temp temp1;

temp1.x = 10;

temp1.y = 20;

std::cout << "Temp1 return value:" << temp1.add(temp1.x, temp1.y) << std::endl;

return 0;

}

其中:在c语言中,可以通过结构体来实现类这个概念。

#include <stdio.h>

struct temp

{

int x;

int y;

int(*add)(int a, int b);

};

int add(int a, int b)

{

return a + b;

}

int main()

{

struct temp temp1;

temp1.x = 10;

temp1.y = 20;

temp1.add = add;

printf("Temp1 return value:%d", temp1.add(temp1.x, temp1.y));

return 0;

}

C++继承

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。C++支持多继承。

 以下例子:定义了一个基类base,定义了一个子类sum,子类继承了基类base,

#include <iostream>
class base

{

public:

 int x;

 int y;

};
class sum: public base

{

public:

 int add()

{

return (x + y);

}

};
int main()

{

sum sum1;


sum1.x = 10;

 sum1.y = 20;
 

std::cout << "Temp1 return value:" << sum1.add() << std::endl;  return 0;

}

注意:派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。

我们可以根据访问权限总结出不同的访问类型,如下所示:



一个派生类继承了所有的基类方法,但下列情况除外:

1.基类的构造函数、析构函数和拷贝构造函数。

2.基类的重载运算符。

3.基类的友元函数。

继承类型

当一个类派生自基类,该基类可以被继承为 public、protected 或 private 几种类型。继承类型是通过上面讲解的访问修饰符 access-specifier 来指定的。我们几乎不使用 protected 或 private 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则:

公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。

保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。

私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。



大家都说C++难,但是程序员的工资也确实高啊,许多程序员工程师想尝试学习C++,由于没有一个系统的学习方法,入门就成了问题。为帮助广大工程师入门C++,电子发烧友联合专业开发工程师直播C++快速入门与进阶,希望通过这次免费直播帮助大家入门C++。

这是一个什么样的直播?

我们邀请了一位嵌入式开发工程师来分享经验,目前他已经开发了一个电池算法并且做出一款电池监控软件“battery monitor”,在自动监控方面有比较深入的了解,直播中会分享出C++与自动监控的一些经验,为理论到实际运用打通一条道路。

直播大纲内容是什么呢?

1、C与C++的基本语法的区别

2、面向过程向面向对象的转变

3、面向对象中各个知识点的关系

4、串口软件在自动化监控中的重要性

适合那些人群?解决什么样的职业瓶颈?

1、0基础入门:面向0~3年的在校生与刚入职场工作的小白程序员,课程由简至繁,保证0基础的你一定可以学懂。

2、毕业求职:这是求职学员的最优学习路径,现场直播学习随时与老师互动反馈。

2、转行求职:但看好程序的发展前景,打算转行做C++程序员。

3、兴趣爱好:软件开发工程师,想多掌握一门编程语言,拓宽自己的编程思维和更好的面对岗位需求。

你能获得什么呢?

1、免费学习C++的机会,分享报名即可

2、海量学习大礼包,直播期间更有好礼相送

3、讲师在线解答学习过程的各种问题

4、C++资料免费领取

直播讲师:

陈佳凡,就职于tymphany,从事嵌入式软件开发,主要工作内容是蓝牙,MCU,linux开发。

另外,我们将赠送C++资料大礼包,资料目录如下:



以上,介绍得差不多了。今天是报名最后一天,速来抢占!!!已经有200+个同学报名!

扫描下方二维码进群领取资料,享受免费学习C++的机会!



对直播有疑问,更多请扫描下方二维码添加直播小助手




点击阅读原文参加免费直播课程
----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:电子发烧友网,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......