C++中为什么要用成员函数?
2016-08-03 22:52
162 查看
对于很多初学c++的人来说,不知道为什么一定要用成员函数,这里我就详细的介绍一下。
有如下代码
#include <iostream>
using namespace std;
class Circle{
public:
double r ;
double PI = 3.1415;
double area = r*r*PI;
};
int main(){
Circle c1;
cout << "请输入半径r:" << endl;
cin >> c1.r;
cout << c1.area << endl;//乱码
return 0;
}
大家不妨猜测或者写一下这个代码,看看结果是什么?
本人在VS2013运行结果如下图:
PS:如果是在VS2010上运行编译不会通过
第二个代码:
#include "iostream"
#define PI 3.1415926
using namespace std;
class Cricle{
public:
double m_r;
double m_s;
public:
void setR(double r){
m_r = r;
}
double getR()
{
return m_r;
}
double getS()
{
m_s = m_r*m_r*PI;
return m_s;
}
};
int main()
{
double r1;
Cricle c1;
cout << "请输入圆的半径" << endl;
cin >> r1;
c1.setR(r1);
cout << "圆的面积为:" << c1.getS() << endl;
return 0;
}
这段代码运行结果如下图:
不能发现有构造函数和没有构造函数答案是不一样的,为什么没有构造函数的答案会是一个乱码?
画个图来理解一下。
当给r赋值并不会影响area的值,所以没有成员函数和有成员函数的相差很大。
有如下代码
#include <iostream>
using namespace std;
class Circle{
public:
double r ;
double PI = 3.1415;
double area = r*r*PI;
};
int main(){
Circle c1;
cout << "请输入半径r:" << endl;
cin >> c1.r;
cout << c1.area << endl;//乱码
return 0;
}
大家不妨猜测或者写一下这个代码,看看结果是什么?
本人在VS2013运行结果如下图:
PS:如果是在VS2010上运行编译不会通过
第二个代码:
#include "iostream"
#define PI 3.1415926
using namespace std;
class Cricle{
public:
double m_r;
double m_s;
public:
void setR(double r){
m_r = r;
}
double getR()
{
return m_r;
}
double getS()
{
m_s = m_r*m_r*PI;
return m_s;
}
};
int main()
{
double r1;
Cricle c1;
cout << "请输入圆的半径" << endl;
cin >> r1;
c1.setR(r1);
cout << "圆的面积为:" << c1.getS() << endl;
return 0;
}
这段代码运行结果如下图:
不能发现有构造函数和没有构造函数答案是不一样的,为什么没有构造函数的答案会是一个乱码?
画个图来理解一下。
当给r赋值并不会影响area的值,所以没有成员函数和有成员函数的相差很大。
相关文章推荐
- 为什么C++中,线程控制函数往往是静态成员函数?【转】
- C++ 类的成员函数定义在.h中为什么会产生函数重定义错误?
- 为什么 C++ 成员函数指针是 16 字节宽的
- 为什么C++静态成员函数不能访问非静态成员变量、不能调用非静态成员函数?(面试常考)
- 在c++中,静态数据成员可以被非静态成员函数调用吗?如果可以调用的话那为什么还要定义静态成员函数呢
- [疑问]C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?
- 求助,C++中为什么有些函数只能用成员函数重载,而有些函数则只能用友元函数重载,其本质原因是什么?
- c++静态成员函数为什么不能为虚函数?
- C++之静态成员函数为什么不能为虚函数
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- C++为什么要引入静态成员函数
- C++中类的访问权限针对的是类而不是对象!(为什么类中的函数可以访问对象的私有成员?)
- c++中非静态函数不能用类名调用,为什么CWnd的成员函数GetDC()可以直接调用啊?
- 为什么C++成员函数不能作为C-Style回调函数?
- C++的const类成员函数(解释为什么非const成员函数不能访问const对象的数据成员)
- C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?
- C/C++——为什么类的静态成员函数在定义的时候不写static?
- 为什么c++中,有时可以用类名直接访问非静态成员函数?
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- C++中成员函数的重载、覆盖与隐藏