gpt4 book ai didi

c++ - 不同的构造方法

转载 作者:行者123 更新时间:2023-11-28 01:46:20 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com