小编Sta*_*owl的帖子

没有定义的函数声明

以下代码将根据 cppquiz.org 进行编译并具有确定性(问题 #30)

#include <iostream>
struct X {
  X() { std::cout << "X"; }
};

int main() { X x(); }
Run Code Online (Sandbox Code Playgroud)

程序的输出什么都不是,因为

X x();
Run Code Online (Sandbox Code Playgroud)

是一个函数声明。

但是我仍然想知道为什么这个会编译,尽管这个声明从未在任何地方定义过?

c++ declaration function definition c++11

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

C++ 11中的逗号运算符(排序)

标准提到f(a,(t = 3,t + 2),c); 根据我的理解,这将是赋值表达式,后跟第二个运算符的表达式.

但语法列出并列:

表达:

赋值表达式

表达式,赋值表达式

编程语言标准C++修订版N4140(2014年11月)

有人这么好,向我解释一下,我在这里错过了什么?

c++ language-lawyer sequencing c++11 c++14

4
推荐指数
2
解决办法
417
查看次数

指向函数需要的指针; 定义之后

void (*pf)(int i){
};
Run Code Online (Sandbox Code Playgroud)

根据C++ 11,我不需要尾随';',但Dev-C++不仅会抛出一个警告 - 而是一个错误并打破编译.

但如果我宣布

void pf(int i){
}
Run Code Online (Sandbox Code Playgroud)

不再发出任何警告了吗?

c++ pointers c++11

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

Orwell Dev-C++中的Unicode字符串

在Dev-C++中编译我的程序时

LPCTSTR ClsName = L"BasicApp";
LPCTSTR WndName = L"A Simple Window";
Run Code Online (Sandbox Code Playgroud)

编译中断,但是当我编译我的程序时

LPCTSTR ClsName = "BasicApp";
LPCTSTR WndName = "A Simple Window";
Run Code Online (Sandbox Code Playgroud)

它成功了; 因此,问题是如何以VS ++的'L'方式将unicode-strings传递给Orwell Dev-C++.

c++ unicode dev-c++

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

LPCSTR没有'long'而UINT_PTR没有指针?

在此网站上:Windows数据类型

出现了这个话题的问题.

LP代表我认为的长指针 - 但不久.UINT_PTR代表无符号的int指针我再次设定 - 但是没有指针.

有人知道这个背景吗?

c c++ msdn pointers

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

WWindow :: operator HWND(){return _hwnd; }

我确实理解如何重载运算符,但显然不完全.

有人可以解释一下该部件的用法

WWindow::operator HWND()
{
    // This overloaded operator allows us to use HWND anyway we want
    return _hwnd;
}
Run Code Online (Sandbox Code Playgroud)

为了我?

我不明白怎么做

operator HWND(){ ... }
Run Code Online (Sandbox Code Playgroud)

应该工作吗?

c++ overloading

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

复制构造函数初始化

Vector::Vector(const Vector& a) : elem{new double[sz]}, sz{a.sz}
{
  for(int i = 0; i!= sz; ++i)
      elem[i] = a.elem[i];
}
Run Code Online (Sandbox Code Playgroud)

这里有趣的部分是elem {new double [sz]}之前

sz{a.sz}
Run Code Online (Sandbox Code Playgroud)

所以就是这样

sz
Run Code Online (Sandbox Code Playgroud)

已初始化.

但它不会抛出任何错误,对吧?

有人可以告诉我一些关于标准中相应部分的内容,对内部工作的更深入的了解,或者其他方式如何受到监管?

c++ copy-constructor c++11

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

36 位存储在 DWORD 中?(x86 汇编 MASM)

.data
source DWORD 20 DUP(0FFFFFFFFh)
target DWORD 20 DUP(?)
.code
...
Run Code Online (Sandbox Code Playgroud)

上面的代码取自 Kip Irvine 最新的第 7 版第 355 页。显然,20x36 位存储到 32?

x86 assembly masm

-1
推荐指数
1
解决办法
127
查看次数