c++ - 不同的构造方法

标签 c++ class

我已经编写了一些小类,现在我看到了调用构造函数的不同方法。哪种方式才是正确的方式? (或者更好的方法)

SharedKeys.h

#ifndef SHAREDKEYS_H
    #define SHAREDKEYS_H

    class SharedKeys
    {
    private:
        char keyCode;

    public:
        SharedKeys(char keycode)
        {
            keyCode = keycode;
        }
        ~SharedKeys() {}

        char getKeyCode() { return keyCode; };

    };

    #endif

Main.cpp

我的构造函数调用方式:

SharedKeys* SK;
SK = new SharedKeys(*cstr); //Call contructor

其他构造函数调用方式:

// SharedKeys constructor
SharedKeys::SharedKeys(*cstr)
{
    keyCode = keycode;
}

我愿意接受任何改进建议。谢谢。

Main.cpp

这里 SK 必须是指针还是? (此代码有效)

SharedKeys* SK;

    vector<SharedKeys> StoreSharedKeys;

string str = x;
char *cstr = new char[str.length() + 1];
strcpy(cstr, str.c_str());

SK = new SharedKeys(*cstr);
StoreSharedKeys.push_back(*SK);
delete[] cstr;

我的理解正确吗?

cout << "Key: " <<  x << " loaded." << endl;
string str = x;
char *cstr = new char[str.length() + 1];
strcpy(cstr, str.c_str());

SharedKeys SK(*cstr);
StoreSharedKeys.push_back(SK);
delete[] cstr;

如果我认为正确,那么这个构造函数调用就是正确的方法。所以我不必删除对象。正确吗?

最佳答案

第二个“电话”根本不是电话。

这是一个类外定义。类的方法(包括构造函数和析构函数)可以在类的主体内部或外部定义。如果方法是在类外定义的,您只能在类内声明它们。

使用类外定义的一个重要原因是您可以将类定义放在头文件中,将方法定义放在 .cpp 文件中。

关于c++ - 不同的构造方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44923410/

相关文章:

c# - 返回多个结果的类方法(列表和多维数组)

c++ - 将 "int"或 "bool"形式的标志传递给函数,在性能方面是否更好?

c++ - ExprTk 中的简单数学表达式

c++ - lang中的模板函数错误但不是gcc

c++ - 如何避免前向声明错误?

python - 在 python 中的 __str__ 方法上调用 super()?

java - ProGuard 找不到父类(super class)或接口(interface)

vba - 将 Type 更改为 Class 会导致 ByRef 参数执行 ByVal

c++ - 如何使用文件句柄写入特定偏移量

c++ - 在 C++ 中解析命令行参数?