dianfu5261 发表于 2022-1-2 17:11

VS2019 C++是本来就行还是BUG

本帖最后由 dianfu5261 于 2022-1-3 07:32 编辑

通过成员判断两个立方体的那里,按道理应该只能用c.get*
而我直接用c.m_*也可以,运行不报错,结果也正常
是设计本来就行吗?(为什么)



#include <iostream>
using namespace std;

class cube {
public:
      //设置长
      void setL(int l) {
                m_L = l;
      }
      //获取长
      int getL() {
                return m_L;
      }
      //设置宽
      void setW(int w) {
                m_W = w;
      }
      //获取宽
      int getW() {
                return m_W;
      }
      //设置高
      void setH(int h) {
                m_H = h;
      }
      //获取高
      int getH() {
                return m_H;
      }
      //求面积
      int calculateS() {
                return 2 * (m_L * m_W + m_L * m_H + m_W * m_H);
      }
      //求体积
      int calculateV() {
                return m_L * m_W * m_H;
      }
      //通过成员函数判断两个立方体是否相等
      bool isSamebyclass(cube& c) {
                //c.m_L = 11;
                if (m_L * m_W * m_H == c.m_L * c.m_W * c.m_H) {//c.m_L和c.getL都能访问
                        return true;
                }return false;
      }
private:
      int m_L;//长
      int m_W;//宽
      int m_H;//高

};
//利用全局函数判断两个立方体是否相等
bool isSame(cube& c1, cube& c2) {
      if (c1.getL() * c1.getW() * c1.getH() == c2.getL() * c2.getW() * c2.getH()) {
                return true;
      }return false;
}

int main() {
      cube c;
      c.setL(10);
      c.setW(10);
      c.setH(10);
      cout << "立方体的面积为:" << c.calculateS() <<"平方米"<< endl;
      cout << "立方体的体积为:" << c.calculateV() << "立方米"<<endl;

      cube c1;
      c1.setL(10);
      c1.setW(10);
      c1.setH(10);

      bool ret = isSame(c, c1);
      if (ret) {
                cout << "两个立方体相等" << endl;
      }
      else {
                cout << "c1和c2不相等" << endl;
      }

      bool ret1 = c.isSamebyclass(c1);
      if (ret1) {
                cout << "两个立方体相等" << endl;
      }
      else {
                cout << "c1和c2不相等" << endl;
      }

      system("pause");
      return 0;
}

xouou 发表于 2022-1-2 21:01

什么叫"只能用c.get*"
没明白你在说什么

不苦小和尚 发表于 2022-1-2 21:05

万物皆地址,不能只看表面

Gilgamesh_1 发表于 2022-1-2 21:07

不然呢?自己的成员变量自己不能用?那要成员变量干啥用的?

woflant 发表于 2022-1-2 22:17

私有成员变量仅类的内部可以使用,其余包括外部实例化的对象均不能使用
成员函数也是在类的内部实现的,当然可以使用

Unexpectedly 发表于 2022-1-2 22:41

楼主好好学学类的定义创建和使用吧,这基础的知识,类的私有成员自己肯定可以用啊

dianfu5261 发表于 2022-1-3 07:29

哦,我懂了,那里应该是相当于实例本身。属于C类访问C本身属性
我一直想成这里是读取另一个实例的数据
谢谢各位
页: [1]
查看完整版本: VS2019 C++是本来就行还是BUG