Qt学习之C++基础

3 篇文章 0 订阅

前言

用了大概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()
{
    //ctor
    cout<<"无参创建了一个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()
{
    //dtor
    cout<<"销毁了一个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++一样的,语法和上边一样,主要注意的还是指针,关于内存的申请和释放,避免野指针的出现。

  • 17
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值