类的静态成员变量的值为什么改变了?
一个dll project,有一个类
class A{
static CString m_str;
static void SetString(CString s); //给m_str赋值,单步调试发现的确是赋值成功了的。
};
在.cpp文件中
CString A::m_str;
编译连接正确。
一个app程序使用dll的类A
CString s = A::m_str;
编译连接,说m_str是unresoved, 为什么?
只有把m_str再声明一遍在app工程里
CString A::m_str;
链接没有问题了。
执行程序就有问题
单步调试:代码进入dll里时,m_str显示被赋值了,但返回到exe的代码时,m_str就成了空的了。
静态变量为什么值会发生变化?如何解决?
相关推荐
C语言面试题,附有答案
分享此C语言面试题给即将找工作的同志,希望能给大家帮助哈,此文档理由n个经常问道的C的面试题,并且附有答案。
C++静态成员函数不能调用非静态成员变量(详解)
下面小编就为大家带来一篇C++静态成员函数不能调用非静态成员变量(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
详解c++ 静态成员变量
类定义时的静态成员只是声明,静态成员的定义和初始化要在类之外完成 C++的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。仔细琢磨静态成员变量,会发现其与C++的方式既相容也矛盾,具有特殊性。 先说相容的一面。·C/C++·有声明和定义的说法:声明给出签名,定义给出具体实现。对类型而言,声明不一定能知道其对象占用空间大小,但根据定义肯定能确定内存占用。说静态成员与C++方式是相容的,因为其初始化方式与方法的定义一致。下面是一个例子: // Foo.hpp namespace tlanyan { // 类声明和定义 class Foo { pri
C++类中的静态成员变量和静态成员函数的作用
C++类中的静态成员变量和静态成员函数的作用
C++中静态成员函数与静态成员变量(static )
C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习C语言的static关键字 (1)加在局部变量的前面使之成为静态局部变量,作用域还是在函数内部,可是生存周期延长了。 (2)加在全局变量的前面限定该变量作用域为文件作用域,就是说即使其他文件使用了extern扩展作用域也不行。这在C语言的多人项目中非常有用,避免了变量的重名。然而在C++中这一功能已经被命名空间取代,但是为了保持和C语言的兼容,static还是有这样的功能。 (3)


