#include "stdafx.h"
#include "iostream.h"
class circle
{
private:
int x,y,r;
public:
void print();
void set()const;
circle(int a,int b,int c);
};
void circle::print()
{
cout<<"圓心:("<<x<<","<<y<<")"<<endl;
cout<<"半徑:"<<r<<endl;
}
void circle::set()const
{
x=20;y=30;r=40;//錯,因爲常函數裏面不能對數據成員做出修改
}
circle::circle(int a,int b,int c)
{
x=a;
y=b;
r=c;
}
int main(int argc, char* argv[])
{
circle p1(0,0,1);
p1.print();
const circle p2(0,0,2);
p2.print();//常對象不能調用非常函數,即使這個函數並不對數據成員做出改變
//記住,常對象只能調用常函數,但是非常對象是可以調用常函數的
return 0;
}
#include "iostream.h"
class circle
{
private:
int x,y,r;
public:
void print();
void set()const;
circle(int a,int b,int c);
};
void circle::print()
{
cout<<"圓心:("<<x<<","<<y<<")"<<endl;
cout<<"半徑:"<<r<<endl;
}
void circle::set()const
{
x=20;y=30;r=40;//錯,因爲常函數裏面不能對數據成員做出修改
}
circle::circle(int a,int b,int c)
{
x=a;
y=b;
r=c;
}
int main(int argc, char* argv[])
{
circle p1(0,0,1);
p1.print();
const circle p2(0,0,2);
p2.print();//常對象不能調用非常函數,即使這個函數並不對數據成員做出改變
//記住,常對象只能調用常函數,但是非常對象是可以調用常函數的
return 0;
}
1》常對象只能調用常函數,常函數裏面不能對數據成員做出更改,否則編譯出錯
2》非常對象可以調用常函數
可是,如果是常數據呢?
下面這個例子將給出很好的解釋
#include "stdafx.h"
#include "iostream.h"
class circle
{
private:
int x,y,r;
const int z;
public:
void print();
void circle::print()const;
circle(int a,int b,int c);
circle(int a,int b,int c,int d);//函數聲明中初始化列表不用帶
};
void circle::print()
{
cout<<"圓心:("<<x<<","<<y<<")"<<endl;
cout<<"半徑:"<<r<<endl;
}
void circle::print()const//重載了一個常量print函數
{
cout<<"圓心:("<<x<<","<<y<<")"<<endl;
cout<<"半徑:"<<r<<endl;
cout<<"常量數據成員爲:"<<z<<endl;
}
// circle::circle(int a,int b,int c)//錯,會提示常量成員z沒有初始化
// {
// x=a;
// y=b;
// r=c;
// }
circle::circle(int a,int b,int c,int d):z(d)
{
x=a;
y=b;
r=c;
}
int main(int argc, char* argv[])
{
circle p1(0,0,1,3);
p1.print();
const circle p2(0,0,2,3);
p2.print();//因爲這裏重載了一個常函數print
return 0;
}
#include "iostream.h"
class circle
{
private:
int x,y,r;
const int z;
public:
void print();
void circle::print()const;
circle(int a,int b,int c);
circle(int a,int b,int c,int d);//函數聲明中初始化列表不用帶
};
void circle::print()
{
cout<<"圓心:("<<x<<","<<y<<")"<<endl;
cout<<"半徑:"<<r<<endl;
}
void circle::print()const//重載了一個常量print函數
{
cout<<"圓心:("<<x<<","<<y<<")"<<endl;
cout<<"半徑:"<<r<<endl;
cout<<"常量數據成員爲:"<<z<<endl;
}
// circle::circle(int a,int b,int c)//錯,會提示常量成員z沒有初始化
// {
// x=a;
// y=b;
// r=c;
// }
circle::circle(int a,int b,int c,int d):z(d)
{
x=a;
y=b;
r=c;
}
int main(int argc, char* argv[])
{
circle p1(0,0,1,3);
p1.print();
const circle p2(0,0,2,3);
p2.print();//因爲這裏重載了一個常函數print
return 0;
}