首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

!关于const

2012-03-15 
请教高手!关于const为什么在类里不可以用const定义成员变量但是在const前加static就可以?另外const定义函

请教高手!关于const
为什么在类里不可以用const定义成员变量
但是在const前加static就可以   ?
另外const定义函数返回值怎么理解,最好用程序解释一下
谢谢!!


[解决办法]
class test
{

public:
test(int x=0, int y=0):num(x), n(y){}
private:
int num;
const int n; //为什么不可以?
};

但是 const 成员,禁止赋值,
所以只能使用 构造函数的初始化列表进行 初始化,
而不能在构造函数中 n=y 赋值。
[解决办法]
谁说不能在类中定义const变量
static const 表示 在类中表示定义一个常量

#include <iostream>
#include <string>
using namespace std;

class foo
{
public:
foo( const string &p ):str_( p )
{}
void show()const
{
cout < < str_ < < endl;
}
private:
const string &str_;
};

int main( void )
{
string str( "test " );
foo f(str);
f.show();

return 0;
}
在DEV-C++g下编译通过
[解决办法]
为什么在类里不可以用const定义成员变量
但是在const前加static就可以 ?

//可以在类里面定义const成员的。只不过要通过初始化列表的方式来初始化。
//使用static之后,在使用之前必须在作用域之内定义。因为它成了一个声明而已。
//声明为static之后的成员变量如果是integal类型的,则可以直接在类定义中初始化。

另外const定义函数返回值怎么理解

//函数返回值的语意和初始化一致



[解决办法]
看effective C++.
里面有解决你的疑问

热点排行