废话就不多说了,直接上代码,所有验证都是通过Qt程序验证的。
C++ const 关键字简单总结:
- const 修饰的成员函数,不能改变成员变量。
- const 修饰的成员函数,返回值如果是指针的话,接收返回值的变量也必须是const修饰的指针变量。
- const 修饰的形参,在函数实现中不能改变。
- const int * tmp 只允许 tmp =&othere 操作。此处const 修饰的是地址。
- int * const tmp 只允许 *tmp = othere 操作。此处const 修饰的是指针。
- const int * const tmp 上述两种操作都不被允许。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void add_i()const ;
void constXC(const int m);
const int *get_i();
private:
Ui::MainWindow *ui;
int i;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::add_i() const
{
// i++;
}
void MainWindow::constXC(const int m)
{
//m++;
}
const int* MainWindow::get_i()
{
i++;
return &i;
}
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
int tmp = 5;
const int * const j = &tmp; //w.get_i();
// *j = 5;
int tmp1 = 10;
// j = &tmp1;
qDebug() << j;
return a.exec();
}