C++规范
.h文件书写(侯捷第二讲)文件引入include< .h>包含的是库文件。include “ .h”包含的是自己写的文件
关于全局变量 头文件可以放什么?
struct/union 的声明,C++可以在头文件的 struct/class 内部随即给出方法的实现
typedef 声明
函数,类声明
extern 变量声明
一些const常量 绝对不能放
全局定义变量(声明都不要有,全局变量声明就是定义)
给出函数的定义(可以有声明,若非要在.h文件给出定义则需要结合extern预防重定义)
a.h
12345678910#pragma once#include <iostream>using namespace std;void fun(){ cout << "5";}
b.cpp
12345678#include "a.h"#include <iostream>int main() { fun ...
C++笔记-3
#web_bg{
background: url(/img/19.png)!important;
/*重新定义background会导致原有定位属性失效,所以也需要再声明一次加权的定位属性*/
background-position: center !important;
background-size: cover !important;
background-repeat: no-repeat !important;
}
C/C++ 中 volatile 关键字详解 volatile用于随时可能发生变化的变量,避免因为编译器优化程序而出错。编译器在多次访问一个变量时,并不会一直通过寻址访问,而是访问寄存器中已经存好的副本(因为快),这时如果出现一些编译器预料之外的改动就会出错。如内嵌汇编操纵栈”、多线程并发访问共享变量时,一个线程改变了变量的值,其他线程可能看不见改动。因此volatile 的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的值,如下:
链接:https://w ...
C++笔记-1
#web_bg{
background: url(/img/19.png)!important;
/*重新定义background会导致原有定位属性失效,所以也需要再声明一次加权的定位属性*/
background-position: center !important;
background-size: cover !important;
background-repeat: no-repeat !important;
}
关于常量指针与指针常量const int *p=&a ;
const 修饰的是取 的操作,因此取星操作不能改变,就是 p的值(p所指的内容)不可改变 ,但指针的方向可以改变。
int * const p = &a ;
const修饰的是p这个指针,因此这个指针的指向固定了,但是指针所指的内容可以改变。
char *p="hello";
p="aa";//报错
这种方法初始化的字符串是常量字符串,不能修改,相当于const char *p=”hello”。
char ...
C++笔记-2
#web_bg{
background: url(/img/19.png)!important;
/*重新定义background会导致原有定位属性失效,所以也需要再声明一次加权的定位属性*/
background-position: center !important;
background-size: cover !important;
background-repeat: no-repeat !important;
}
关于extern的用法: 利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数,下面就结合具体的实例,分类说明一下。
一、引用同一个文件中的变量
12345678910111213#include< stdio.h>int func();int main(){func(); //1printf("%d",num); //2return 0;}int num = 3;int func(){printf("%d\n&qu ...
关于C++ QT中的 Widget::Widget(QWidget *parent) :QWidget(parent)
如何理解下面段代码?
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
}
在讲解原因之前,先请大家看下面的一个例子:
#include <iostream>
using namespace std;
class Base
{
public:
Base() :m_num(0){
cout << "this is Base()" << endl;
}
Base(int val):m_num(val){
cout << "this is Base(int val)" << endl;
}
private:
int m_num;
};
上方代码定义了一个基类Base,并且有两个构造函数,一个是默认构造函数,一个是有一个整型参数的构造函数。
class BaseChild: publ ...
QT线程
#web_bg{
background: url(/img/22.png)!important;
/*重新定义background会导致原有定位属性失效,所以也需要再声明一次加权的定位属性*/
background-position: center !important;
background-size: cover !important;
background-repeat: no-repeat !important;
}
QT的线程:引入< QThread > 两种用法:
第一种: 实例化类:thread = new Thread ; 启动线程:< QThread >类中带有虚函数run(),把需要线程处理的函数放在run()中重新实现。即在Thread.h与Thread.cpp文件中重写run(); 启动线程: thread->start()打开新的线程,就会自动调用run()函数。 关闭线程:thread.quit();thread. ...