C++常成员函数
#include<iostream>usingnamespacestd;classBase{private:doublex,y;constdoublep;public:B...
#include<iostream>
using namespace std;
class Base{
private:
double x , y;
const double p;
public:
Base(double m, double n, double d): p(d){ x=m; y=n;}
void show();
void show()const;
};
void Base::show()
{cout<<x<<","<<y<<"p="<<p<<endl;}
void Base::show()const
{cout<<x<<","<<y<<"const p="<<p<<endl;}
void main(){
Base a(8.9, 2.5, 3.1416);
Base const b(2.5, 8.9, 3.14);
b.show();
a.show();
}
结果:、
2.5, 8.9, const P=3.14
8.9,2.5, P=3.1416
一个很简单的关于CONST成员函数的例题,说明它可以用来参与重载。
我有点不懂:
普通对象即可以访问普通成员函数也可以访问常成员函数,那么main申明的对象a
到底是访问 void show() 还是 void show()const,这里是不是产生了二义性? 展开
using namespace std;
class Base{
private:
double x , y;
const double p;
public:
Base(double m, double n, double d): p(d){ x=m; y=n;}
void show();
void show()const;
};
void Base::show()
{cout<<x<<","<<y<<"p="<<p<<endl;}
void Base::show()const
{cout<<x<<","<<y<<"const p="<<p<<endl;}
void main(){
Base a(8.9, 2.5, 3.1416);
Base const b(2.5, 8.9, 3.14);
b.show();
a.show();
}
结果:、
2.5, 8.9, const P=3.14
8.9,2.5, P=3.1416
一个很简单的关于CONST成员函数的例题,说明它可以用来参与重载。
我有点不懂:
普通对象即可以访问普通成员函数也可以访问常成员函数,那么main申明的对象a
到底是访问 void show() 还是 void show()const,这里是不是产生了二义性? 展开
1个回答
展开全部
C++中,不是常对象也可以调用常成员函数。
(1) 常对象
用const修饰的对象叫对象常量,其格式如下:
〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉
声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。
例:分析下列错误的地方,说明理由:
#include<iostream.h>
class Point
{ int x, y;
public:
Point(int a, int b) { x=a; y=b;}
Void MovePoint( int a, int b){ x+=a; y+=b;}
Void print(){ cout<<"x="<<x<<"y="<<y<<endl;}
};
void main( )
{const Point point1( 10,10);//常量对象
point1.MovePoint(2,2);//常对象point1的数据不能被更改,所以错误
point1.print( );//print函数的this指针不能指向常对象}
常对象常被用在对象的引用上。所谓常引用是指说明引用时用const修饰。常引用所引用的对象不能被更
新,一般用做形参。其格式:
const 〈类型说明〉&〈引用名〉
例:根据例题5-11的类给出程序的执行结果:
#include<math.h>
int length(const Point &p1, const Point &p2)
{ int l;
l=sqrt((p1.x -p2.x)* (p1.x -p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
return l;
}
void main( )
{
Point a(1,1),b(4,5);
Cout<<"两点的距离是:"<<length( a, b)<<endl;
}
本程序的输出:
两点的距离是:5
(2)常成员函数
用const关键词说明的函数叫常成员函数。其格式如下:
〈类型〉〈函数名〉(〈参数表〉)const;
常成员函数的作用和功能:
常成员函数不能更新对象的数据,也不能调用非const修饰的成员函数。常对象只能调用类的常成员函数
以及类的静态成员函数。
例:给出下列程序的执行结果:
#include<iostream.h>
class Point
{ int x, y;
public:
Point(int a, int b) { x=a; y=b;}
Void MovePoint( int a, int b){ x+=a; y+=b;}
Void print()const { cout<<"x="<<x<<"y="<<y<<endl;}
};
void main( )
{
Point point1(1,1);
const Point point2( 2,2);//常量对象
point1.print();//普通对象可以调用常成员函数
point2.print( );//常对象调用常成员函数
}
本程序执行结果:
x=1 y=1
x=2 y=2 。
(1) 常对象
用const修饰的对象叫对象常量,其格式如下:
〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉
声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。
例:分析下列错误的地方,说明理由:
#include<iostream.h>
class Point
{ int x, y;
public:
Point(int a, int b) { x=a; y=b;}
Void MovePoint( int a, int b){ x+=a; y+=b;}
Void print(){ cout<<"x="<<x<<"y="<<y<<endl;}
};
void main( )
{const Point point1( 10,10);//常量对象
point1.MovePoint(2,2);//常对象point1的数据不能被更改,所以错误
point1.print( );//print函数的this指针不能指向常对象}
常对象常被用在对象的引用上。所谓常引用是指说明引用时用const修饰。常引用所引用的对象不能被更
新,一般用做形参。其格式:
const 〈类型说明〉&〈引用名〉
例:根据例题5-11的类给出程序的执行结果:
#include<math.h>
int length(const Point &p1, const Point &p2)
{ int l;
l=sqrt((p1.x -p2.x)* (p1.x -p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
return l;
}
void main( )
{
Point a(1,1),b(4,5);
Cout<<"两点的距离是:"<<length( a, b)<<endl;
}
本程序的输出:
两点的距离是:5
(2)常成员函数
用const关键词说明的函数叫常成员函数。其格式如下:
〈类型〉〈函数名〉(〈参数表〉)const;
常成员函数的作用和功能:
常成员函数不能更新对象的数据,也不能调用非const修饰的成员函数。常对象只能调用类的常成员函数
以及类的静态成员函数。
例:给出下列程序的执行结果:
#include<iostream.h>
class Point
{ int x, y;
public:
Point(int a, int b) { x=a; y=b;}
Void MovePoint( int a, int b){ x+=a; y+=b;}
Void print()const { cout<<"x="<<x<<"y="<<y<<endl;}
};
void main( )
{
Point point1(1,1);
const Point point2( 2,2);//常量对象
point1.print();//普通对象可以调用常成员函数
point2.print( );//常对象调用常成员函数
}
本程序执行结果:
x=1 y=1
x=2 y=2 。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询