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