目录
命名空间
静态成员
(1)静态数据成员
(2)静态成员函数
1 myclass.h
2 myclass.cpp
3 test.h
4 test.cpp
5 main.cpp
命名空间
命名空间(namespace)是许多编程语言使用的一种代码组织的形式。
它实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
命名空间的作用主要是建立一些互相分隔的作用域,以分类和区别不同的代码功能,避免不同的代码片段(通常由不同的人协同工作或调用已有的代码片段)同时使用时由于不同代码间变量名相同而造成冲突。
静态成员
静态成员是C++(以及其他一些面向对象编程语言)中的一个概念,它属于类本身而不是类的任何特定对象。静态成员可以是数据成员(即变量)或成员函数(即方法)。静态成员在类的所有对象之间共享,并且不依赖于任何特定的对象实例。
(1)静态数据成员
静态数据成员是类的所有对象共享的变量。这意味着无论创建多少个对象,都只有一个静态数据成员的副本。静态数据成员通常在类的外部进行初始化。
(2)静态成员函数
静态成员函数是只能访问静态数据成员和其他静态成员函数的类成员函数。它们不能访问类的非静态数据成员,因为非静态数据成员需要具体的对象实例来引用。静态成员函数可以通过类名或对象名来调用,但通常使用类名来调用,因为它们不依赖于任何对象实例。
1 myclass.h
#ifndef MYCLASS_H
#define MYCLASS_Hnamespace MyNamespace {class MyClass {public:MyClass();void myFunction();};}#endif // MYCLASS_H
2 myclass.cpp
#include "MyClass.h"
#include <iostream>
#include <QDebug>
using namespace std;namespace MyNamespace {MyNamespace::MyClass::MyClass()
{}void MyNamespace::MyClass::myFunction()
{qDebug()<<"MyClass::myFunction";
}}
3 test.h
#ifndef TEST_H
#define TEST_H
#include <QDebug>
namespace MyNamespace {class test{public:test();static int a;static void static_test_fun();void no_static_fun();};}#endif // TEST_H
4 test.cpp
#include "test.h"namespace MyNamespace {
// 在类外部定义和初始化静态成员变量
int test::a = 0;test::test()
{}
// 静态成员函数的定义
void test::static_test_fun()
{a++;qDebug()<<"static_test_fun a:"<<a;
}void test::no_static_fun()
{qDebug()<<"no_static_fun";
}}
5 main.cpp
#include "MyClass.h"
#include "test.h"
using namespace MyNamespace;
int main() {MyClass mMyClass;mMyClass.myFunction();test::static_test_fun();test::static_test_fun();return 0;
}