前言

用了大概2个月的时间,学了Qt,然后开发一个小项目,总的来说,在主机GUI程序中,相比Java的Swing和JavaFX,个人感觉Qt的界面设计更加简便一点,灵活性更高一些,然后下边就主要简述一下Qt的基础知识。
学习一门语言,要学一下他的语法特色,Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。所以说他的本质语法还是C++。

Qt入门系列:
Qt学习之C++基础
Qt学习之Qt安装
Qt学习之Qt基础入门(上)
Qt学习之Qt基础入门(中)
Qt学习之Qt基础入门(下)

本文原创,创作不易,转载请注明!!!
本文链接
个人博客: https://ronglin.fun/archives/224
PDF链接:见博客网站
CSDN: https://blog.csdn.net/RongLin02/article/details/120594168

总述

首先先了解一下,C++的面向对象编程的基础语法。
参考资料:C++ 类 & 对象
这里不过多的解释面向对象思想,而是主要说明C++的面向对象的编程语法,相较于Java的面向对象 的区别。

示例代码

首先C++面向对象一般会有两个文件,一个是.h文件,头文件用来存储一些定义声明之类的东西,一个是cpp文件,用来实现头文件的定义.用c++简单的创建一个Student类,开发工具用的是CodeBlocks,代码如下

Student.h

#ifndef STUDENT_H
#define STUDENT_H
#define man 0
#define woman 1
#include <string>
using namespace std;class Student
{
public:enum Degree{NoStudy=0,Primary = 1,Junior = 2,Senior = 3,University = 4};Student();Student(string name,int age,int sex,Degree degree);virtual ~Student();void setName(string name);void setAge(int age);void setSex(int sex);void setDegree(Degree degree);string getName();int getAge();int getSex();Degree getDegree();void printInfo();protected:private:string name;int age = 0;int sex = man;Degree degree;
};#endif // STUDENT_H

Student.cpp

#include "Student.h"
#include <iostream>
#include <string>Student::Student()
{//ctorcout<<"无参创建了一个Student"<<endl;
}Student::Student(string name,int age,int sex,Degree degree)
{cout<<"有参创建了一个Student"<<endl;this->name = name;this->age = age;this->sex = sex;this->degree = degree;
}void Student::setName(string name)
{this->name = name;
}
void Student::setAge(int age)
{this->age = age;
}
void Student::setSex(int sex)
{this->sex = sex;
}
void Student::setDegree(Degree degree)
{this->degree = degree;
}string Student::getName()
{return this->name;
}
int Student::getAge()
{return this->age;
}
int Student::getSex()
{return this->sex;
}
Student::Degree Student::getDegree()
{return this->degree;
}void Student::printInfo()
{cout<<"姓名: "<<this->name<<endl;cout<<"年龄: "<<this->age<<endl;cout<<"性别: "<<this->sex<<endl;
}Student::~Student()
{//dtorcout<<"销毁了一个Student"<<endl;
}

main.cpp

#include <iostream>
#include "Student.h"using namespace std;int main()
{Student stu1;stu1.setName("小亮");stu1.setAge(10);stu1.setSex(man);stu1.printInfo();Student stu2("小明",18,man,Student::University);stu2.printInfo();Student* pStu1 = new Student;pStu1->setName("小花");pStu1->setAge(30);pStu1->setSex(woman);pStu1->printInfo();Student* pStu2 = new Student("小红",20,woman,Student::University);pStu2->printInfo();delete pStu1;delete pStu2;return 0;
}

文件布局如下:

运行结果:

解释说明

首先创建了一个Student类,有两个构造函数,一个是无参构造,一个是有参构造。
和java面向对象编程的方法类似,但是C++有指针这个东西,需要在堆上申请内存,然后最后注意释放delete申请的内存。
同时,写成员函数的实现的时候,要注意在函数名称前加作用域。

封装

同时面向对象的,封装性也体现出来了,public protected private

继承

关于继承,C++支持多继承,和Java的单继承不太一样,可以参考一下这个网站
C++ 继承
直接copy一段网站上的示例代码

#include <iostream>using namespace std;// 基类 Shape
class Shape
{public:void setWidth(int w){width = w;}void setHeight(int h){height = h;}protected:int width;int height;
};// 基类 PaintCost
class PaintCost
{public:int getCost(int area){return area * 70;}
};// 派生类
class Rectangle: public Shape, public PaintCost
{public:int getArea(){ return (width * height); }
};int main(void)
{Rectangle Rect;int area;Rect.setWidth(5);Rect.setHeight(7);area = Rect.getArea();// 输出对象的面积cout << "Total area: " << Rect.getArea() << endl;// 输出总花费cout << "Total paint cost: $" << Rect.getCost(area) << endl;return 0;
}

多态

同样看一下菜鸟教程的多态说明
C++ 多态
和Java的类似,就不赘述了。

总结

C++面向对象和Java大体类似,重要的是面向对象的思想,而Qt也是一样的,和C++一样的,语法和上边一样,主要注意的还是指针,关于内存的申请和释放,避免野指针的出现。

Qt学习之C++基础相关推荐

  1. 【QT学习笔记】#基础篇#(4)设置程序图标和标题

    一.设置图标 以下两种方式设置后,应用程序本身图标.任务栏图标.窗口左上角图标 会使用设置的同一个图标. 方式一: 在 .pro 文件添加 RC_ICONS = 图标名.ico 示例: QT += c ...

  2. Qt学习之Qt基础入门(下)

    1. 前言 前两篇博客简单的阐述了一下Qt的入门用法,这篇博客继续跟着视频学习. Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) ...

  3. Qt学习之Qt基础入门(中)

    1. 前言 上一篇博客,总结了Qt的一些基础用法,这篇博客继续跟视频学习Qt的常用方法 Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门( ...

  4. 小尾羊的qt学习之路,01课,基础芝士

    目录 软件下载 软件安装 信号和槽 connect()函数实现信号和槽 实例演示信号和槽机制 QPushButton按钮用法 QPushButton按钮的创建 QPushButton按钮的使用 QPu ...

  5. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

  6. Qt学习笔记之文件处理

    Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...

  7. 【Qt】Qt学习资料汇总

    00. 目录 文章目录 00. 目录 01. Qt官网 02. 编码风格 03. GitHub & Third-Party 04. 社区论坛 05. 参考博客 06. 书籍 附录 01. Qt ...

  8. 【Qt Quick】零基础入门系列之安装与卸载(一)

    [Qt Quick]概述 |本文大概阅读时间8分钟. |版权说明:原创文章,如需转载,请标明文章出处.https://blog.csdn.net/weixin_40192195/article/det ...

  9. QT学习之路2 学习笔记

    QT学习之路2 学习笔记 1.Qt 是一个著名的 C++ 应用程序框架.你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个&quo ...

  10. QT学习日志(附:简易计算器,qq登录界面,简易绘图板,植物大战僵尸魔改版项目实践)

    目录 写在前面 实训前一天 头文件无法生成 项目栏不见了 不知道如何发布程序 实训第一天(附简易计算器的实现) 自定义命名空间的相关问题 关于隐式调用构造函数的问题 实训第二天(不附地址薄的实现) 关 ...

最新文章

  1. JS+库+框架+工具
  2. 单电源运算放大器全波整流电路_几种二极管整流电路原理图解。
  3. MATLAB基本语法 初学者
  4. SpringBoot 整合Security——自定义表单登录
  5. Eclipse europa 更新时 Error retrieving feature.xml. [error in opening zip file]的解决
  6. java true false_关于java:如何存储boolean返回false / true的次数
  7. 查找算法之三 插值查找(C++版本)
  8. Grafana+Telegraf+Influxdb监控Tomcat集群方案
  9. Vuejs——(4)v-if、v-for
  10. 同步IO和异步IO的区别
  11. 微信商户收款码在哪里下载 -PC端
  12. HDU 2206 JAVA
  13. linux的vps centos6.5环境下搭建vpnServer
  14. 三步修改jupyter notebook默认路径
  15. Mac动画交互设计软件Principle
  16. Python爬虫 爬取豆瓣电影TOP250
  17. 更改计算机浏览视图,来,一起认识查看、编辑幻灯片时不同的视图方式—想象力电脑应用...
  18. 【计算机操作系统】-进程切换什么时候会发生呢?
  19. 欧拉道路 和 欧拉回路
  20. 如何去掉万恶的wps屏保

热门文章

  1. 《企业IT架构转型之道》边读边想——共享服务中心的建设原则
  2. 嵌入式Linux,4G模组驱动,移远EC20、EC25使用随笔-内核kernel
  3. 渗透测试各种扫描工具集合(好用)
  4. Copula函数实战(Matlab)
  5. 共享智能榨汁机器人_新橙派果汁机器人-让智能现榨果汁触手可及
  6. dts双轨制会员积分系统
  7. 系统分析师视频教程-张友生
  8. android web service视频教程,需要一个简单的android / webservice工作教程?
  9. 锐捷Linux认证失败,锐捷上网认证常见问题及解决办法
  10. 学完计算机技术的感受,计算机培训心得体会