你好,我是c++的新手,
我可以使用Example example("123")创建类的新实例
我有两个问题
if(example ==NULL),因为这不是一个指针,我们还有其他方法可以做到这一点。我能做这样的事吗?
Example get_Example() {
Example example;
if (example.getName().empty() {
example = Example example("345");
return example;
}
return NULL // i cannot return null. How
}example = Example example("345");,我知道这很愚蠢,但是没有指针我怎么做呢?
发布于 2013-05-04 14:23:54
Example *ex = NULL。null_example并重载==示例e;if (e == null_example) { e.init();}
is_init()函数。
示例e;if (!e.is_init()) { e.init();}get_example可能是这样的:
空get_example(例如&e) { // method2或method3 }发布于 2013-05-04 14:25:32
不要认为C++对象是OOP或Java。例子不是推荐信。它是物体本身。它之所以存在是因为它已经消失了。
如果可以为定义为null的对象定义"state“,则检查空(或使其为空)是有意义的。
示例,您可以定义
方法,并在对象成员具有表示“非空示例”的值时返回true。
检查空Example actualexample,此时仅为if(!actualexample)
发布于 2013-05-04 14:30:56
另一种选择是使用空对象模式。null对象模式基本上允许yo返回一个您标识为Null的完全构造的对象。
维基百科文章链接中的例子给出了一个很好的例子:
class animal
{
public:
virtual void make_sound() = 0;
};
class dog : public animal
{
void make_sound() { cout << "woof!" << endl; }
};
class null_animal : public animal
{
void make_sound() { }
};记住,创建一个特定的“空对象”(即在某个地方定义全局Example kNullExample; )不是一个好的解决方案,因为如果将它分配给另一个示例对象(即Example newObject = kNullExample;),您将无法识别该对象不再为null的事实。
另一个选项是将布尔值存储在对象的某个地方,并编写一个"IsNull()“函数。只有当您无法使类变为虚拟(例如映射二进制文件)或如果您真的负担不起虚拟表跳转时,这才是真正的解决方案。
https://stackoverflow.com/questions/16375223
复制相似问题