吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 808|回复: 6
收起左侧

[已解决] VS2019 C++是本来就行还是BUG

[复制链接]
dianfu5261 发表于 2022-1-2 17:11
本帖最后由 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
私有成员变量仅类的内部可以使用,其余包括外部实例化的对象均不能使用
成员函数也是在类的内部实现的,当然可以使用

免费评分

参与人数 1吾爱币 +1 收起 理由
dianfu5261 + 1 谢谢@Thanks!

查看全部评分

Unexpectedly 发表于 2022-1-2 22:41
楼主好好学学类的定义创建和使用吧,这基础的知识,类的私有成员自己肯定可以用啊
 楼主| dianfu5261 发表于 2022-1-3 07:29
哦,我懂了,那里应该是相当于实例本身。属于C类访问C本身属性
我一直想成这里是读取另一个实例的数据
谢谢各位
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表