前言
用了大概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基础入门(下)
本文原创,创作不易,转载请注明!!!
本文链接
个人博客: /archives/224
PDF链接:见博客网站
****: /RongLin02/article/details/120594168
总述
首先先了解一下,C++的面向对象编程的基础语法。
参考资料:C++ 类 & 对象
这里不过多的解释面向对象思想,而是主要说明C++的面向对象的编程语法,相较于Java的面向对象 的区别。
示例代码
首先C++面向对象一般会有两个文件,一个是.h文件,头文件用来存储一些定义声明之类的东西,一个是cpp文件,用来实现头文件的定义.用c++简单的创建一个Student类,开发工具用的是CodeBlocks,代码如下
#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
#include ""
#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;
}
#include <iostream>
#include ""
using namespace std;
int main()
{
Student stu1;
("小亮");
(10);
(man);
();
Student stu2("小明",18,man,Student::University);
();
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;
(5);
(7);
area = ();
// 输出对象的面积
cout << "Total area: " << () << endl;
// 输出总花费
cout << "Total paint cost: $" << (area) << endl;
return 0;
}
多态
同样看一下的多态说明
C++ 多态
和Java的类似,就不赘述了。
总结
C++面向对象和Java大体类似,重要的是面向对象的思想,而Qt也是一样的,和C++一样的,语法和上边一样,主要注意的还是指针,关于内存的申请和释放,避免野指针的出现。