问题列表 - 第23326页

C++ copy-construct构造和分配问题

以下是"C++ Gotchas"一书第56条的摘录:

通过三种不同方式编写Y对象的简单初始化并不罕见,就像它们是等效的一样.

Y a( 1066 ); 
Y b = Y(1066);
Y c = 1066;
Run Code Online (Sandbox Code Playgroud)

事实上,所有这三个初始化可能会导致生成相同的目标代码,但它们并不相同.a的初始化称为直接初始化,它完全符合人们的期望.初始化是通过直接调用Y :: Y(int)完成的.

b和c的初始化更复杂.事实上,它们太复杂了.这些都是复制初始化.在初始化b的情况下,我们要求创建一个Y类型的匿名临时值,用值1066初始化.然后我们使用这个匿名临时值作为类Y的拷贝构造函数的参数来初始化b.最后,我们将析构函数称为匿名临时.

为了测试这个,我做了一个带有数据成员的简单类(最后附加了程序),结果令人惊讶.似乎对于c的情况,对象是由复制构造函数构造的,而不是书中所建议的.

有人知道语言标准是否已经改变,或者这只是编译器的优化功能?我使用的是Visual Studio 2008.

代码示例:

#include <iostream>

class Widget
{
    std::string name;
public:
    // Constructor
    Widget(std::string n) { name=n; std::cout << "Constructing Widget " << this->name << std::endl; }
    // Copy constructor
    Widget (const Widget& rhs) { std::cout << "Copy constructing Widget from " << rhs.name << std::endl; }
    // Assignment operator
    Widget& operator=(const Widget& rhs) { std::cout << "Assigning Widget …
Run Code Online (Sandbox Code Playgroud)

c++ constructor copy-constructor assignment-operator

7
推荐指数
2
解决办法
3146
查看次数

4
推荐指数
1
解决办法
2342
查看次数

从数据库加载django模板

我试图从djangos正常请求 - 响应结构之外的数据库渲染django模板.但由于django模板的编译方式,它似乎并不重要.我想做这样的事情:

>>> s = Template.objects.get(pk = 123).content
>>> some_method_to_render(s, {'a' : 123, 'b' : 456})
>>> ... the rendered output here ...
Run Code Online (Sandbox Code Playgroud)

你怎么做到这一点?

django django-templates django-models

12
推荐指数
2
解决办法
8240
查看次数

用vi缩进或注释几个文本行

可以用vim或vim同时评论或缩进多行吗?例如:

for item in Lista:
    ind = int(floor(1.0*(item-lmin)/width))
    if ind==nintervals:
        ind=ind-1
    print item,ind
Run Code Online (Sandbox Code Playgroud)

评论它:

#for item in Lista:
    #ind = int(floor(1.0*(item-lmin)/width))
    #if ind==nintervals:
        #ind=ind-1
    #print item,ind
Run Code Online (Sandbox Code Playgroud)

或缩进到:

  for item in Lista:
      ind = int(floor(1.0*(item-lmin)/width))
      if ind==nintervals:
          ind=ind-1
      print item,ind
Run Code Online (Sandbox Code Playgroud)

PD是否与VI和VIM之间存在差异?

vim

16
推荐指数
3
解决办法
4万
查看次数

如何创建要添加到JavaScript对象变量的动态密钥

我正在尝试这样的事情,但这个例子不起作用.

jsObj = {};

for (var i = 1; i <= 10; i++) {
    jsObj{'key' + i} = 'example ' + 1;
}
Run Code Online (Sandbox Code Playgroud)

如何制作这样的动态密钥呢?

javascript object

196
推荐指数
1
解决办法
22万
查看次数

如何在屏幕右下角设置wxPython主框架?

为了更好的描述,

+-----------------------+
|   Desktop (screen)    |
|                       |
|                       |
|         +----------+  |
|         | wxPython |  |
|         |   App.   |  |
|         |          |  |
|         |          |  |
|         +----------+  |
+-----------------------+
Run Code Online (Sandbox Code Playgroud)

看看WxPython App.,它与屏幕右下方对齐.如何定位主框架因为每台PC的屏幕宽度不同?

为了更好地理解,我想弹出像DigsbyFeedNotifier一样的小窗口!我认为都使用python !!

python wxpython

6
推荐指数
1
解决办法
6347
查看次数

Func委托与ref变量

public object MethodName(ref float y)
{
//method
}
Run Code Online (Sandbox Code Playgroud)

如何为此方法定义Func委托?

c# delegates reference func c#-3.0

52
推荐指数
2
解决办法
2万
查看次数

c ++ free(none gpl)webservice框架

即时寻找不是GPL c ++ webservices框架工作的好免费软件我使用过AXIS2,但它对我们的需求没有好处,是否有任何好的框架可以像gSoap一样好又健壮

c++ free web-services

5
推荐指数
1
解决办法
296
查看次数

将抽象类实现为本地类?利弊

出于某种原因,我正在考虑在一个函数(方法)中实现接口作为本地类.

考虑以下:

class A{
public:

    virtual void MethodToOverride() = 0;

};

A * GetPtrToAImplementation(){

    class B : public A {
    public:
        B(){}
        ~B(){}

        void MethodToOverride() {
            //do something
        }
    };

    return static_cast<A *>(new B());
}


int _tmain(int argc, _TCHAR* argv[])
{

    A * aInst = GetPtrToAImplementation();

    aInst->MethodToOverride();

    delete aInst;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是:

  1. 我懒得在单独的文件中实现类(B)
  2. MethodToOverride只是将调用委托给其他类
  3. 其他用户不应看到B类
  4. 无需担心删除aInst,因为智能指针用于实际实现

所以我的问题是我做得对吗?

提前致谢!

c++ class local

5
推荐指数
1
解决办法
286
查看次数

在IB中没有使用绑定和共享NSUserDefaults保存数据的麻烦

我有一个奇怪的问题,我无法弄明白.我对Interface Builder有点不满意.我想要做的似乎应该是简单的,但由于某种原因它不起作用.

在界面构建器中,我有一个带有简单NSTextField的首选项窗口.我已使用控制器键"值"和模型键"test"将值绑定到共享用户默认值控制器.我构建/运行我的应用程序并打开首选项窗口,在所述文本字段中键入一些随机值,关闭窗口.Command-Q应用程序.然后在shell中为我的应用程序执行"defaults read com.xxx.yyy",无法找到密钥和值.话虽如此,似乎下次我启动应用程序并更改它的工作值,但前提是我在关闭窗口之前将焦点从NSTextField切换下来.

在NSUserDefaults的文档中,它说共享控制器立即保存值,我在这里错过了一些愚蠢的东西吗?

谢谢你的帮助.

xcode interface-builder nsuserdefaults cocoa-bindings

2
推荐指数
1
解决办法
748
查看次数