Qt跨平台特性
在深入探讨C++编程的基础知识之前,我们首先需要了解Qt框架的跨平台特性。Qt是一个功能强大的跨平台应用程序框架,它允许开发者编写一次代码,然后在多个平台上运行,包括Windows、macOS、Linux、iOS、Android等。这种跨平台能力极大地提高了开发效率和应用的可移植性。
C++基础概念
运算符
在C++中,<<
被称为插入运算符,通常用于向输出流中插入数据;而>>
是提取运算符,用于从输入流中提取数据。
auto关键字
auto
关键字用于让编译器自动推断变量的类型。然而,形参的数据类型不能使用auto
自动类型推断。
引用与指针
引用是C++中的一个重要概念,它为变量提供了一个别名。
这里取地址ref就相当于给i取个别名(引用)
使用引用时,需要注意两点:
- 引用必须初始化。
- 一旦引用被绑定到某个变量上,这种关系就无法拆解。
与指针不同,引用不能被改变,即不能重新指向另一个变量。此外,引用必须在声明时立即初始化,而指针则没有这个要求。
内联函数
内联函数是一种特殊的函数,它可以在编译时被插入到每个调用该函数的地方,从而减少函数调用的开销。使用inline
关键字可以声明一个内联函数。
这里两个函数被隐含的声明为内联函数
函数默认参数
函数可以有默认参数值,如果在函数调用时没有提供这些参数,则会使用默认值。此外,函数参数可以部分提供,按照从左至右的顺序。
可以传参,不传的话是默认值
也可以指只传一个参数,从左至右传
函数重载
函数重载允许存在多个同名函数,只要它们的参数列表不同。编译器会根据提供的参数类型选择正确的函数版本。
这里会调用第一个函数
第二个fn要求传变量
这里也调第一个
这里调第二个
面向对象的四大特性
- 抽象:
- 封装:
- 继承:
- 多态:
访问控制
C++中的类成员可以有不同的访问级别:
public
:可以被任何外部代码访问。protected
:可以被类本身和其子类访问。private
:只能被类本身访问。
通常,将公有成员放在类定义的前面,以提高代码的可读性。
类的实现
类的成员函数可以在类定义外部实现。如果类是分开文件编写的,成员函数的定义通常放在.cpp
文件中。需要注意的是,函数的大小并不计入类的大小。
这种形式,可以在circle外面定义类里面的函数
类分文件写的话要写在.h文件里面
但是如果是在外面定义类型里面的函数的话要写在对应的.c文件里面
构造函数和初始化列表
C++中的构造函数可以带参数,也可以使用初始化列表来初始化成员变量。初始化列表提供了一种高效的方式来初始化对象,它只能在构造函数中使用。
Sizeof(clock)大小是12,函数并不在Clock类里占用字节
C++:可以int i(100),因为int也算一个类
类里面其实默认有clock(){
}函数的,他什么都不做
这种clock定义方法是初始化:初始化列表
这种是赋值
初始化效率高一些
只能在构造函数中使用,其他地方用不行
复制构造函数
复制构造函数是一种特殊的构造函数,用于创建一个对象的副本。如果开发者没有提供自定义的复制构造函数,编译器会生成一个默认的版本。
C2调了构造,但是不是你自己写的构造函数(复制构造、拷贝构造)
下面还有两种情况要调用复制构造
情况2
情况3
写法:
运行结果:
析构函数
析构函数是类的销毁函数,它在对象生命周期结束时被调用。析构函数不能带有参数,且析构的次数应该等于或小于构造的次数,否则可能发生内存泄漏。
析构函数:
析构次数小于等于构造次数,小于可能是内存泄露
析构函数不能带参数
总结
C++是一种功能丰富且复杂的编程语言,它提供了强大的特性来支持面向对象编程。通过理解C++的基础概念和特性,开发者可以更有效地编写高质量、可维护的代码。同时,Qt框架的跨平台特性为C++开发者提供了一个强大的工具,以创建可在多个平台上运行的应用程序。