Programming questions

Kevin Krammer kevin.krammer at gmx.at
Wed Mar 10 21:21:04 GMT 2004


On Wednesday 10 March 2004 17:25, Nathan Toone wrote:

> 	First question:  Are most KDE applications written in C or C++?

C++

> 	Second question: What is the difference? (if there is any)

C++ is a language with very similar syntax to C and in large parts code can be 
used interchangeably.
C++ supports object oriented programming and some other very nice things like 
templates (which the newest Java version tries to copy by it Generics)

> 	Third question:  Would you reccommend using the Java Bindings in
> kdebindings to write applications (this would work for new applications,
> just not to change existing applications)?  Or is this not a reccommended
> way of developing applications?

You could write new applications but not change C++ applications.
But using the Qt and KDE bindings for Java gets you close to the workings of 
their C++ origins, so it might be possible to change C++ code after learning 
some C++ basics.
If you are interested in KDE Java development, there is a kde-java mailinglist 
IIRC.

> going the other way...and I know there have to be similarities.  For
> example, in java you say new Object(), or whatever, and in C++ you do
> something wierd (from looking at the code) like Object::Instance~($qstring,

No, in C++ it is
new ClassName()
as well.

> Basically, I'm looking for the C++ equivalents of java's import,
> constructors, method declaration and calls, etc.  Since I think in java,
> I'd like to use it as a jumping off point.

Imports are done by two things.
One is the #include statement, which makes a declaration available to the 
compiler and one is a linker directive to make the implementation known to 
the linker.

Usually you only have to care about the #include at the beginning, because you 
will mostly use classes from the libs commonly linked by the build framework.

Constructors basically work the same as in Java, a difference is that you have 
to use the name of the base class instead of super() if you want to use a 
specific version of the base class's constructors because a C++ class can 
have more than one base class

Methods declarations are similar as well.

In C++ you can put the implementation outseide the class declaration (usually 
in a separate file) or inline like in Java.

Example:
Java
public class Test
{
    public Test() {
        m_number = 0;
    }

    public Test(int n) {
        m_number = n;
    }

    public int number() {
        return m_number;
    }

    private int m_number;
}

C++
class Test
{
public:
    Test() {
        m_number = 0;
    }

    Test(int n) {
        m_number = n;
    }

    int number() {
        return m_number;
    }

private:
    int m_number;

};

If the implementation were not inline it would look like this

class Test
{
public:
    Test();
    Test(int n);

    int number();

private:
    int m_number;

};

Test::Test()
{
    m_number = 0;
}

Test::Test(int n)
{
    m_number = n;
}

int Test::number()
{
    return m_number;
}


Cheers,
Kevin

-- 
Kevin Krammer <kevin.krammer at gmx.at>
Qt/KDE Developer, Debian User
www.mrunix.de - Unix/Linux programming forum
www.qtforum.org - Qt programming forum
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: signature
URL: <http://mail.kde.org/pipermail/kde/attachments/20040310/8e68137a/attachment.sig>
-------------- next part --------------
___________________________________________________
This message is from the kde mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.


More information about the kde mailing list