请教高手!关于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++.
里面有解决你的疑问