【C++基础 】 --- C++ 为什么需要定义成员函数

简介: 【C++基础 】 --- C++ 为什么需要定义成员函数

由面向过程转到面向对象程序时易犯的错误

#include "iostream" //包含C++标准头文件
 
using namespace std; //使用c++标准命令空间的标准定义
 
class circle
{
public:
  double r;
  double pi = 3.14;
  double area = pi*r*r;
 
};
 
int main()
{
  circle circle_1;
  cout << "please input the radius" << endl;
  
  cin >> circle_1.r;
  cout << circle_1.area << endl;
 
  system("pause");
 
  return 0;
}

运行结果如下:

分析错误原因:

1、程序运行到circle1.circle的时候,在栈上分配内存如下(C语言中的内存四区模型同样适用于c++)

2、执行到cin >> circle1.r的时候,我们确实将r的值变成了10.

3、执行到cin <<circle1.area<<endl; 的时候,r的值虽然变为10,但是c++编译器不会主动调用area= pi * r * r;

circle1.area,只是在circle1 circle的时候才执行。

出错的原因:在你通过类型定义变量的时候,area的值就已经确定下来了。

 

 

解决方法:

class circle
{
public:
  double r;
  double pi = 3.14;
  double area;
 
  double getS()
  {
    area = pi*r*r;
    return area;
  }
 
};
 
int main()
{
  circle circle_1;
  cout << "please input the radius" << endl;
  
  cin >> circle_1.r;
  cout << circle_1.getS()<< endl;
 
  system("pause");
 
  return 0;
}

运行结果:

定义成员函数,在调用成员函数的时候,会重新执行该函数。

目录
相关文章
|
8天前
|
安全 程序员 编译器
【C++】继承(定义、菱形继承、虚拟继承)
【C++】继承(定义、菱形继承、虚拟继承)
15 1
|
8天前
|
存储 编译器 C语言
【C++】类与对象【定义、访问限定符、this指针】
【C++】类与对象【定义、访问限定符、this指针】
6 1
|
15天前
|
安全 编译器 C++
【C++类和对象】const成员函数及流插入提取
【C++类和对象】const成员函数及流插入提取
|
26天前
|
数据安全/隐私保护 C++
C++ 类方法解析:内外定义、参数、访问控制与静态方法详解
C++ 中的类方法(成员函数)分为类内定义和类外定义,用于操作类数据。类内定义直接在类中声明和定义,而类外定义则先在类中声明,再外部定义。方法可以有参数,访问权限可通过 public、private 和 protected 控制。静态方法与类关联,不依赖对象实例,直接用类名调用。了解这些概念有助于面向对象编程。
16 0
|
27天前
|
存储 编译器 C++
C++:类之六脉神剑——默认成员函数
C++:类之六脉神剑——默认成员函数
31 0
|
28天前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
|
28天前
|
编译器 C++
【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数
【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数
|
28天前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(上) |类的作用域、类的实例化、类的对象大小的计算、类成员函数的this指针
【C++成长记】C++入门 | 类和对象(上) |类的作用域、类的实例化、类的对象大小的计算、类成员函数的this指针
|
28天前
|
编译器 C语言 C++
【C++成长记】C++入门 | 类和对象(上) |面向过程和面向对象初步认识、类的引入、类的定义、类的访问限定符及封装
【C++成长记】C++入门 | 类和对象(上) |面向过程和面向对象初步认识、类的引入、类的定义、类的访问限定符及封装
|
1月前
|
编译器 C语言 C++
【C++专栏】C++入门 | 类和对象 | 类的引入、struct&class的区别、类的定义
【C++专栏】C++入门 | 类和对象 | 类的引入、struct&class的区别、类的定义
14 0