首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c++中创建赋值对象

在c++中创建赋值对象
EN

Stack Overflow用户
提问于 2013-05-04 14:13:15
回答 5查看 148关注 0票数 2

你好,我是c++的新手,

我可以使用Example example("123")创建类的新实例

我有两个问题

  1. 我知道我们不能检查对象是否是空的,比如if(example ==NULL),因为这不是一个指针,我们还有其他方法可以做到这一点。
  2. 我有一个返回对象的方法,如:如何返回null? 示例get_Example() { if (example.getName().empty() ){.empty(“345”);返回示例;}返回null // i不能返回NULL。}

我能做这样的事吗?

代码语言:javascript
运行
复制
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");,我知道这很愚蠢,但是没有指针我怎么做呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-05-04 14:23:54

  1. 使用指针,Example *ex = NULL
  2. 构造默认的null_example并重载==

示例e;if (e == null_example) { e.init();}

  1. 但是您可以提供一个is_init()函数。 示例e;if (!e.is_init()) { e.init();}
  2. 您的get_example可能是这样的: 空get_example(例如&e) { // method2或method3 }
票数 2
EN

Stack Overflow用户

发布于 2013-05-04 14:25:32

不要认为C++对象是OOP或Java。例子不是推荐信。它是物体本身。它之所以存在是因为它已经消失了。

如果可以为定义为null的对象定义"state“,则检查空(或使其为空)是有意义的。

示例,您可以定义

方法,并在对象成员具有表示“非空示例”的值时返回true。

检查空Example actualexample,此时仅为if(!actualexample)

票数 1
EN

Stack Overflow用户

发布于 2013-05-04 14:30:56

另一种选择是使用空对象模式。null对象模式基本上允许yo返回一个您标识为Null的完全构造的对象。

维基百科文章链接中的例子给出了一个很好的例子:

代码语言:javascript
运行
复制
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()“函数。只有当您无法使类变为虚拟(例如映射二进制文件)或如果您真的负担不起虚拟表跳转时,这才是真正的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16375223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档