C++ C++;实例化问题

C++ C++;实例化问题,c++,C++,希望验证我对其工作原理的理解。 有一个具有一个公共变量的C++类: char* character_encoding; 其唯一构造函数定义为: TF_StringList(const char* encoding = "cp_1252"); 当我在C++和CLI或C++中使用这个类时,我首先要声明的是这个类的对象的指针: const TF_StringList * categories; 然后稍后我将其实例化: categories = new TF_StringList();

希望验证我对其工作原理的理解。
有一个具有一个公共变量的C++类:

char* character_encoding;  
其唯一构造函数定义为:

TF_StringList(const char* encoding = "cp_1252");  

当我在C++和CLI或C++中使用这个类时,我首先要声明的是这个类的对象的指针:

const TF_StringList * categories;  
然后稍后我将其实例化:

categories = new TF_StringList();  
这给了我一个指向TF_StringList类型的对象的指针,该对象的变量字符_编码设置为“cp_1252”; 那么,所有这些逻辑都有效吗


Jim

我想说,这取决于构造函数的实际功能。如果我们假设它这样做:

TF_StringList(const char* encoding)
: character_encoding(encoding)
{
}

那么你的逻辑就成立了。但是它可以做任何事情,您不显示构造函数参数和实例成员变量之间的连接。

我看到的一个问题是,您的构造函数接受一个const char*,但您将它存储在char*中。这将导致编译器抱怨,除非你扔掉常量。(或者,是否有任何理由不将字段设置为常量字符*?我看不出您需要编辑名称的字符…

澄清:我没有编写TF_StringList类,它是第三方类,我只有标题。所以(1)我不知道构造函数中发生了什么,(2)无法更改字符编码的修饰符。这对你的答案有什么影响?好吧,我们不能保证你传递的构造函数是你从公共字段中得到的——只有类的创建者可以保证,而他们可能不会。(名称可以转换为大写,或者查找“最接近的匹配项”,等等)好的,不打算验证公共字段的值,只想知道TF_StringList对象已正确实例化,以便我可以开始使用它的insert(const char*)方法加载值。谢谢为什么有必要用可疑的前缀“unmanaged”来污染这个问题。也许我错了,但我很确定斯特劳斯特鲁普从未写过一本书《非托管C++的设计与发展》。诚然,我向我们的祖先致歉没有构造函数的源代码,我们无法知道。顺便说一下:管理层与此无关,所以我很感激,如果你收回你的评论,我是少数几个(与正常人)C++工作的人之一),这并不意味着是抢占的,只是在MS世界里,我发现自己被拖入了一些混乱中。“Chris Becke,Matthieu M.:我已经删除了“非托管”,并改变了“托管C++”。到更正确的“C++/CLI”。现在快乐吗?