读书人

能不能在成员函数中定义类的变量?解决

发布时间: 2012-03-20 14:01:11 作者: rapoo

能不能在成员函数中定义类的变量?
cls1::func1(){
int this->intCount1; //就是定义类的成员变量
int intCount2;
};



[解决办法]
C\C++编译器要明确知道类型的大小才可以为其分配内存。
你先假设你这样声明的是可以的,那么这个函数的效果是为本类对象额外添加一个4字节空间。
而我们知道C\C++编译器为数组分配连续的线性地址空间。
这就意味着当编译器使用你的这种声明方式时,实例化的对象内存是不可控的。
数组中的成员一旦调用cls1::func1()函数,那么本例对象的便会增大。
这就会造每个cls1对象寻址intCount1时,都会越界使用到第二个(甚至更多)cls1对象的地址空间内。
这样一来数据的安全便一点保障都没有了。
所以,不可能有这种形式的声明。

读书人网 >C++

热点推荐