小编Mot*_*tti的帖子

C++ 11中默认函数的重点是什么?

C++ 11增加了告诉编译器创建任何特殊成员函数的默认实现的能力.虽然我可以看到删除函数的价值,但显式默认函数的值是什么?只需将其留空,编译器无论如何都会这样做.

我能看到的唯一一点是,只有当没有其他构造函数存在时才会创建默认构造函数:

class eg {
public:
    eg(int i);
    eg() = default; 
};
Run Code Online (Sandbox Code Playgroud)

但这真的比你现在这样做好吗?

class eg {
public:
    eg(int i);
    eg() {}
};
Run Code Online (Sandbox Code Playgroud)

或者我错过了一个用例?

c++ defaulted-functions c++11

19
推荐指数
3
解决办法
9700
查看次数

shared_ptr的不同风格之间的差异

有没有之间的差异boost::shared_ptr,std::tr1::shared_ptr以及即将到来的(中C++0x)std::shared_ptr

从一个移植到另一个有任何开销还是基本相同?

c++ boost tr1 shared-ptr c++11

17
推荐指数
1
解决办法
6027
查看次数

给一个提升线程命名?

是否可以为a命名,boost::thread以便调试器表和崩溃日志更具可读性?怎么样?

c++ debugging boost-thread

17
推荐指数
1
解决办法
9902
查看次数

当getBoundingClientRect正确时,clientWidth和clientHeight报告为零

在MDN的Element.clientWidth描述中,它说.

注意:我已经根据@potatopeelings答案更新了MDN .

Element.clientWidth属性是元素的内部宽度(以像素为单位).它包括填充但不包括垂直滚动条(如果存在,如果呈现),边框或边距.

此属性将值舍入为整数.如果需要小数值,请使用element.getBoundingClientRect().

据我所知,除了四舍五入以外,clientWidth应该是相同的getBoundingClientRect().width.

但是我看到了很多的元素(其中displayinline?)的clientWidth(和高度)为零,而通过值返回getBoundingClientRect似乎是正确的.

在stackoverflow上搜索会带来一些答案,说明在文档准备好之前就会发生这种情况状态但我一直看到这一点,而不仅仅是在页面加载时.

这种行为对于我检查过的所有浏览器都是一致的,在哪里指定这应该是行为?

样品:

function str(name, width, height) {
  return name + ': (' + width + ', ' + height + ')';
}

function test() {
  var s = document.getElementById('s');
  var rect = s.getBoundingClientRect();
  document.getElementById('out').innerHTML =
    str('client', s.clientWidth, s.clientHeight) + '<br/>' +
    str('bounding', rect.width, rect.height);
}
Run Code Online (Sandbox Code Playgroud)
 <span id="s">A span</span><br/> <button onclick="test()">Test</button>
<hr /> …
Run Code Online (Sandbox Code Playgroud)

html javascript css

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

在Windows Server 2008上的IIS 7下设置SMTP

网站最初是在IIS 6下开始的,该网站在那里运行良好.现在,在重新定位到运行W2K8S的新服务器之后,除了IIS 7之外,从网站发送邮件的所有内容现在都能正常运行.

在网上进行了简短的研究,看看是否有人有一个好的解决方案,但没有用......甚至在微软自己的支持网站上都没有一丝希望.

以下是迄今为止在新W2K8S盒子上采取的步骤:

  • 在服务器管理器下添加了SMTP功能
  • 在IIS 7管理器中为站点本身启用SMTP电子邮件,以将电子邮件传递到SMTP服务器本地主机,但不成功
  • 为IIS 7管理器中的根站点启用SMTP电子邮件(不确定是否需要启用站点)以将电子邮件传递到SMTP服务器本地主机,但不成功

在完成这些基本设置失败之后,我想确保我可以实际地从/向服务器端口25进行通信.我可以成功地从/向有问题的服务器远程登录到端口25上的测试电子邮件获取HELO等.所以我不相信它是防火墙配置问题.

IIS 7安装测试是使用匿名和Windows身份验证执行的 - 无论如何都没有运气.

手动检查Web Config文件,它反映了服务器使用localhost的正确条目.

阅读手册,没有运气...: - /

iis iis-7 smtp

16
推荐指数
1
解决办法
9万
查看次数

包含具有相同URL的另一个IFRAME的IFRAME是否有限制?

为了在框架层次结构中玩一下,我写了一个小的html页面,允许嵌套任意数量的帧(问题末尾可用的代码).

但是这不起作用,在IE9和Firefox 4上创建了内部框架但没有渲染(head并且body为空):

框架截图

在Chrome上它可以工作两个级别然后如果我单击Add内部框架上的按钮没有任何反应(控制台中也没有错误消息).

如果我复制文件N次数并让每个文件使用不同的文件,它适用于任何深度(但如果有一个循环则不行).

我试图搜索这样的限制,但我不能使用正确的关键字.有没有人对此有任何参考?

这是addRemoveFrames.html文件:

<!DOCTYPE html>
<html>
<head>
    <title>Add and Remove Frames</title>
    <script type="text/javascript">
        function add() {
            var f = document.createElement('iframe');
            f.src = 'addRemoveFrames.html';
            document.getElementById('frameContainer').appendChild(f);
        }
        function remove() {
            var c = document.getElementById('frameContainer');
            var f = c.lastChild;
            if (f)
                c.removeChild(f);
        }
    </script>
</head>
    <body>
        <input type="button" onclick="add()" value="Add"/>
        <input type="button" onclick="remove()" value="Remove"/>
        <hr />
        <div id="frameContainer"></div>

    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我稍微修改了@davin的答案,因此每个框架的URL反映了它在层次结构中的完整路径.

var counter = 0;
function add() …
Run Code Online (Sandbox Code Playgroud)

html javascript iframe dom

16
推荐指数
2
解决办法
7540
查看次数

为什么匿名命名空间中的函数/对象具有外部链接?

为什么匿名命名空间中定义的符号(函数和变量)与static关键字没有内部链接?如果某个功能在外面不可见/可访问,那么外部链接的原因是什么?

c++

16
推荐指数
1
解决办法
2141
查看次数

在C++中可以使用哪些其他有用的强制转换

C++附带了四个内置的强制转换.

  1. static_cast
  2. dynamic_cast
  3. const_cast
  4. reinterpret_cast

不要说皱眉头C (style*)cast.

另外,boost提供了一个lexical_cast,你还有其他有用的演员阵容吗?

c++ casting

14
推荐指数
3
解决办法
2089
查看次数

"指向最后一个元素的指针"的更漂亮的语法,std :: vector?

我想知道是否有更漂亮的语法来获得C++向量中最后一个元素的普通指针(不是迭代器)

std::vector<int> vec;

int* ptrToLastOne = &(*(vec.end() - 1)) ;

// the other way I could see was
int* ptrToLastOne2 = &vec[ vec.size()-1 ] ;
Run Code Online (Sandbox Code Playgroud)

但这些都不是很好看!

c++ stl vector stdvector

14
推荐指数
3
解决办法
1万
查看次数

基于空终止字符串的循环的范围

我有点假设基于for循环的范围会支持C风格的字符串

void print_C_str(const char* str)
{
    for(char c : str)
    {
        cout << c;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而事实并非如此,标准[stmt.ranged] (6.5.4)表示基于范围的工作有以下三种可能性之一:

  1. 范围是一个数组
  2. 范围是一个具有可调用beginend方法的类
  3. 在关联的命名空间(加上std命名空间)中可以访问ADL

当我在全局命名空间中添加beginend函数时,const char*我仍然会收到错误(来自VS12和GCC 4.7).

有没有办法让基于范围的for循环与C样式字符串一起使用?

我尝试添加一个重载namespace std,这是有效的,但据我的理解,添加重载namespace std是非法的(这是正确的吗?)

c++ for-loop null-terminated c++11

14
推荐指数
1
解决办法
2472
查看次数