c++ 函数名后面的const
2013-06-06 23:07
267 查看
From: http://blog.csdn.net/jianguo_liao19840726/article/details/8239984
[html]
view plaincopy
#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
class Text{
public:
void printconst(void) const
{cout<<"hello"<<endl;}
void print(void)
{cout<<"hello"<<endl;}
private:
int k;
};
Text *a;
int main(void)
{
a = new Text();
a->print();
return 0;
}
输出:
[html]
view plaincopy
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc
pateo@pateo-B86N53X:~/work/study$ ./main
hello
网上帖子转的太多,一个帖子能被转很多次,但是它们却从来没验证,那个例子带代码完全拷贝下来都运行不起来,呵呵,我就遇到过,下面是我找到的然后改了后才成功的
[html]
view plaincopy
#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
class Text{
public:
Text(){};
void printconst(void) const
{cout<<"hello"<<endl;}
void print(void)
{cout<<"hello"<<endl;}
private:
int k;
};
const Text text;
int main(void)
{
text.printconst();
return 0;
}
输出:
[html]
view plaincopy
pateo@pateo-B86N53X:~/work/study$ ./main
hello
[html]
view plaincopy
#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
class Text{
public:
Text(){};
void printconst(void) const
{cout<<"hello"<<endl;}
void print(void)
{cout<<"hello"<<endl;}
private:
int k;
};
const Text text;
int main(void)
{
text.print();
return 0;
}
输出:
[html]
view plaincopy
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc
main.cc: In function ‘int main()’:
main.cc:27: error: passing ‘const Text’ as ‘this’ argument of ‘void Text::print()’ discards qualifiers
pateo@pateo-B86N53X:~/work/study$
说明:
const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数.
const对象只能调用const成员函数。
const对象的值不能被修改,在const成员函数中修改const对象数据成员的值是语法错误
const函数中调用非const成员函数是语法错误
const对象的成员是不可修改的,然而const对象通过指针维护的对象却是可以修改的.
c. const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在编译时,以是否修改成员数据为依据,进行检查.
[html]
view plaincopy
#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
class R
{
public:
R(int r1, int r2) { R1=r1; R2=r2; }
void print();
void print() const;
private:
int R1, R2;
};
void R::print()
{
cout<<R1<<R2<<endl;
}
void R::print() const
{
cout<<R1<<R2<<endl;
}
int main()
{
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
}
输出:
[html]
view plaincopy
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc
pateo@pateo-B86N53X:~/work/study$ ./main
54
2052
[html]
view plaincopy
#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
class Text{
public:
void printconst(void) const
{cout<<"hello"<<endl;}
void print(void)
{cout<<"hello"<<endl;}
private:
int k;
};
Text *a;
int main(void)
{
a = new Text();
a->print();
return 0;
}
输出:
[html]
view plaincopy
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc
pateo@pateo-B86N53X:~/work/study$ ./main
hello
网上帖子转的太多,一个帖子能被转很多次,但是它们却从来没验证,那个例子带代码完全拷贝下来都运行不起来,呵呵,我就遇到过,下面是我找到的然后改了后才成功的
[html]
view plaincopy
#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
class Text{
public:
Text(){};
void printconst(void) const
{cout<<"hello"<<endl;}
void print(void)
{cout<<"hello"<<endl;}
private:
int k;
};
const Text text;
int main(void)
{
text.printconst();
return 0;
}
输出:
[html]
view plaincopy
pateo@pateo-B86N53X:~/work/study$ ./main
hello
[html]
view plaincopy
#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
class Text{
public:
Text(){};
void printconst(void) const
{cout<<"hello"<<endl;}
void print(void)
{cout<<"hello"<<endl;}
private:
int k;
};
const Text text;
int main(void)
{
text.print();
return 0;
}
输出:
[html]
view plaincopy
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc
main.cc: In function ‘int main()’:
main.cc:27: error: passing ‘const Text’ as ‘this’ argument of ‘void Text::print()’ discards qualifiers
pateo@pateo-B86N53X:~/work/study$
说明:
const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数.
const对象只能调用const成员函数。
const对象的值不能被修改,在const成员函数中修改const对象数据成员的值是语法错误
const函数中调用非const成员函数是语法错误
const对象的成员是不可修改的,然而const对象通过指针维护的对象却是可以修改的.
c. const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在编译时,以是否修改成员数据为依据,进行检查.
[html]
view plaincopy
#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
class R
{
public:
R(int r1, int r2) { R1=r1; R2=r2; }
void print();
void print() const;
private:
int R1, R2;
};
void R::print()
{
cout<<R1<<R2<<endl;
}
void R::print() const
{
cout<<R1<<R2<<endl;
}
int main()
{
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
}
输出:
[html]
view plaincopy
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc
pateo@pateo-B86N53X:~/work/study$ ./main
54
2052
相关文章推荐
- C++函数声明的时候后面加const代表什么
- C++函数后面加const修饰
- C++ 成员函数后面加 const
- C++函数后面跟一个const表示该函数是常成员函数
- C++中const在函数名前面和函数后面的区别
- C++函数后面加const关键字
- C++ 中函数后面跟const
- C++学习之路(20)---C++ 类成员函数后面加 const关键字
- c++在函数后面加const
- C++中const在函数名前面和函数后面的区别
- C++ 类成员函数后面加 const关键字
- C++函数后面加const修饰
- C\C++中函数后面加const
- c++中Const,Const函数,Const变量,函数后面的Const
- C++在函数声明时,后面跟个const是什么意思?
- C++:在成员函数后面放const的作用
- C++ 中函数后面跟const
- [C++]函数后面加const修饰
- C++中const在函数名前面和函数后面的区别
- c++ 函数后面 const 作用