VC类中定义静态常量

在C++类中定义常量,有以下两种方法:
1.在类定义体内定义枚举常量;
例如:
class A
{
public:
enum
{
THREAD_NUM = 100,
MEM_BLOCK_SIZE = 1024,
PORT = 8080
};
};
这样定义出来的常量值在程序运行过程中是不能被修改的,编译的时候就已经确定了这些常量的值;

2.在类定义体中声明使用static const来修饰成员常量,然后在类定义体外对这些成员进行初始化;也就是说在类定义体内定义const类型的静态成员常量;
例如:
class A
{
public:
static const int THREAD_NUM;
static const int MEM_BLOCK_SIZE;
static const int PORT;
};

const int A::THREAD_NUM = 100;
const int A::MEM_BLOCK_SIZE = 1024;
const int A::PORT = 8080;

用这两种方式在类中定义的常量在程序运行过程中是不能被修改的;这两种方式也是模板特化和偏特化的基础;

时间: 2024-08-29 07:59:21

VC类中定义静态常量的相关文章

如何反射取得一个类中的静态常量?

问题描述 如何反射取得一个类中的静态常量?如: public class User { public static final String teacher = "json"; private String id; private String name;...取得teacher怎么取呢? 解决方案 Class ownerClass = Class.forName("com....User"); Field field = ownerClass.getField(&

osconstants-OsConstants.java类中定义了很多常量,但都是用placeholder赋值,为什么这样做

问题描述 OsConstants.java类中定义了很多常量,但都是用placeholder赋值,为什么这样做 Android OsConstants.java定义了许多常量,但是都是用placeholder来赋值的,这些常量的结果将会一样. 为什么要这样做? 解决方案 这些都是预设的,也就是考虑到以后可能会更改,或者考虑到未来可能跨平台.所以没有写死,用占位符表示.但是有时候这种东西一辈子也不会再更改了.但是因为历史原因保留了下来.

c++的问题-C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过

问题描述 C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过 class GradeBook { public: //constant -- number of students who took the test const static int students = 0; //constructor initialize course name and array of grades GradeBook( string, const int [] ); voi

VC++.NET中定义和使用MFC DLL(一)

什么是DLL? DLL指的是动态链接库(Dynamic Link Library),它是一个可以被多个应用程序(甚至是不同语言编写的应用程序)同时调用的可执行二进制文件,是一个可共享的库.DLL是建立在客户/服务器通信的概念上,包含若干函数.类或资源的库文件,函数和数据被存储在一个DLL(服务器)上并由一个或多个客户导出而使用,这些客户可以是应用程序或者是其它的DLL. 在下面我们将通过一个具体的例子来说明如何利用VC.Net定义一个DLL文件,并且在VC.Net的应用程序中调用,这个例子的主要

groovy脚本中(非类中)可以使用静态变量吗

问题描述 groovy脚本中(非类中)可以使用静态变量吗 如问题: 在一个groovy脚本中以下代码: static int a = 1; //现在这样是报错 // 业务逻辑 // xxxx a++: 我只希望a初始化一次,注意是在脚本中,不是在定义class中 换句话说,我是想在脚本groovy.lang.Script子类里放静态变量

c#-C#中在类中定义变量,为什么不能赋值textbox的值

问题描述 C#中在类中定义变量,为什么不能赋值textbox的值 static int i=convert.toint32(textbox1.text); 这是在类中定义的,但是报错,非静态定义 解决方案 因为textbox1不是静态的,所以不能访问,去掉static 解决方案二: static赋值的变量也必须是static的,

c++-为什么在类中定义没有定义默认构造函数的类类型变量通过编译了?

问题描述 为什么在类中定义没有定义默认构造函数的类类型变量通过编译了? class T { public: T(int i) :_i(i) {} private: int _i; }; class U { private: T t; }; 如果定义了一个构造函数不是就会取消合成的默认构造函数吗? 可以定义不可以赋值是吧?刚才发现 const int ci; int &ri; 也通过编译了. 解决方案 语法这么规定的,因为t是成员变量 如果你写在函数里 main() { T t; } 那就报错了.

c++-C++可以在类中定义一个类吗?

问题描述 C++可以在类中定义一个类吗? 比如像下面这样: 解决方案 完全可以注意:内部类可以访问外部类的私有成员,外部类不能访问内部类的私有成员! 解决方案二: 可以呀,就像在结构体里申明结构体一样,不过好像通常不这样用. 解决方案三: 嵌套类的概念,相当于一个内部类. 解决方案四: 可以的,不过看起来比较别扭 解决方案五: 可以,嵌套类有以下性质: 一.**可见性**嵌套类对于外围类: 嵌套类仅仅是声明在外围类内部的类型,而不是外围类的成员 外围类不具备嵌套类所定义的成员 对于外围类来说,嵌

class-为什么说java中一个类中定义两个构造函数。

问题描述 为什么说java中一个类中定义两个构造函数. 为什么说java中一个类中定义两个构造函数.是不是意思就是一个是无参构造函数,一个是有参数的构造函数, 解决方案 构造函数可以定义很多个,如同函数重载,只要参数个数类型不同就可以. 因此无参构造函数只能有一个.至于定义2个,可以是一个无参,一个有参,也可以是2个有参. 解决方案二: oh no, an object can have multiple constructors with different parameters. 解决方案三