C++程序设计原理与实践__记录2

来源:互联网 发布:wap彩票小偷源码 编辑:程序博客网 时间:2024/05/16 06:43
#include<iostream>using namespace std;class T{public:int get(){    return a;}void add_n(){a++;}T():a(0){}T(int i):a(i){}private:int a;};void do_somefuc(T &t,const T &const_t){ int a=t.get(); //int b=const_t.get(); /*cannot convert 'this' pointer from 'const class T' to 'class T &'*/                        /*编译器不知道get()是否修改了对象a,const_t.get()是错误的,我们没有给出任何这方面的信息*//*因此编译器假定get()有更改对象a,报告一个错误*/   t.add_n();  // const_t.add_n(); 容易理解常量不能改变}int main(){T t1;T t2(8);do_somefuc(t1,t2);return 0;}

另一个版本 使用常量函数告诉编译器 没有改变对象。

#include<iostream>using namespace std;class T{public:int get() const /*使用const告诉编译器 get不改变对象a*/{    return a;}void add_n(){a++;}T():a(0){}T(int i):a(i){}private:int a;};void do_somefuc(T &t,const T &const_t){ int a=t.get(); int b=const_t.get();    t.add_n();  //const_t.add_n(); }int main(){T t1;T t2(8);do_somefuc(t1,t2);return 0;}


原创粉丝点击