当前位置:  开发笔记 > 编程语言 > 正文

Java程序员 - C++人如何使用类?指向类,默认参数的指针?

如何解决《Java程序员-C++人如何使用类?指向类,默认参数的指针?》经验,为你挑选了1个好方法。

我了解面向对象编程的方法,但我已经习惯了Java,直到最近我才接触过C++.

我认为我的问题与语法无关,与C++中的OOP哲学有关.我理解指针和地址与堆栈和堆之间的区别,以及东西,但我仍然觉得我错过了一些东西.

这是一个例子:我有一个包含一些数据的类(Shape).我有另一个类(App)使用了许多形状.

class Square {
    private: 
        int x;
        int y;
        int size;

    public:
        /* constructor */
        Square(int x, int y, int size);
}


class App {
    private:
        Square redSquare;
        Square blueSquare;

    public:
        void setup();
        void draw();
}

在某些时候,某些东西将实例化我的应用程序并调用setup().问题在于,当我声明App类(在App.hpp中,比方说)时,"redSquare"和"blueSquare"被实例化,而不仅仅是声明.作为一名Java程序员,我将在本例中在setup()中实例化我的类.但是这意味着我不能像上面那样做,我必须将redSquare和blueSquare设置为POINTERS,然后我可以在setup()中使用new创建它们.

但是你会怎么做呢?或者你会使用默认参数创建一个构造函数,如上所述创建redSquare和blueSquare,然后使用像Square.init(x,y,size)之类的东西在App.setup()中设置这些方块的值?或者其他一些方式?

你有没有汇总课程,或只有指针?

我当然可以通过这种方式破解它,所以它可以自己工作,但我有一种感觉,我正在做"Java方式",而不是得到C++程序员的想法.



1> Éric Malenfa..:

在我看来,问题来自于"setup()"方法的存在.IIUC,意图是使用App作为:

App a;
a.setup();

在调用setup()之前处于什么状态是"a"?如果调用draw()会发生什么?如果答案类似于"在使用App对象完成任何操作之前必须调用setup()",那么这意味着setup()是App的"真正"构造函数,而App的当前ctor是无意义的.结论:删除"setup()"方法并将其替换为有意义的ctor.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有