小编pal*_*m3D的帖子

C++中struct和class之间有什么区别?

这个问题已在C#/ .Net的背景下提出.

现在我想学习C++中结构和类之间的区别.请讨论技术差异以及在OO设计中选择其中一个的原因.

我将从一个明显的区别开始:

  • 如果您没有指定public:or private:,则结构的成员默认是公共的; 默认情况下,类的成员是私有的.

我确信在C++规范的模糊角落中还有其他差异.

c++ oop struct class c++-faq

427
推荐指数
11
解决办法
34万
查看次数

重新审视"text-decoration"和":after"伪元素

我重新问这个问题,因为它的答案在我的案例中不起作用.

在我的打印媒体样式表中,我想在使用:after伪类的每个链接后附加url .

a:after {
    content: " <" attr(href) ">";
    text-decoration: none;
    color: #000000;
}
Run Code Online (Sandbox Code Playgroud)

在Firefox(可能是Chrome但不是IE8)中,text-decoration: none被忽略,并且下划线在URL的底部没有吸引力.该color然而,正确设置为黑色的网址.有没有办法让text-decoration工作?

原来的问题所附固定大小的图像,而不是可变宽度的文本.它的答案使用填充和背景图像,以避免使用文本修饰属性.当内容是可变宽度文本时,我仍在寻找解决方案.

css cross-browser pseudo-element

49
推荐指数
6
解决办法
3万
查看次数

C++演员语法样式

Regular cast vs. static_cast vs. dynamic_cast相关的问题:

你更喜欢C++中的演员语法风格?

  • C风格的演员语法: (int)foo
  • C++ - 样式转换语法: static_cast<int>(foo)
  • 构造函数语法: int(foo)

它们可能无法转换为完全相同的指令(是吗?)但它们的效果应该相同(对吗?).

如果你只是在内置数值类型之间进行转换,我发现C++风格的转换语法太冗长了.作为以前的Java编码器,我倾向于使用C风格的转换语法,但我的本地C++专家坚持使用构造函数语法.

你怎么看?

c++ casting coding-style

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

typedef和using之间有什么区别?

使用之间有什么区别

typedef Some::Nested::Namespace::TypeName TypeName;
Run Code Online (Sandbox Code Playgroud)

要么

using Some::Nested::Namespace::TypeName;
Run Code Online (Sandbox Code Playgroud)

提供TypeName当地范围的速记?

c++ typedef using

15
推荐指数
3
解决办法
1857
查看次数

如何教C++速成课程?

几个星期后,我们将直接从大学开始为Java程序员教授C++速成课程.他们对C或C++的经验很少或根本没有.

本课程以前的版本只有1或2个半天课程,涵盖的主题包括:

  • 新的语言特征,例如
    • 标题与实现
    • 指针和参考
    • 内存管理
    • 运算符重载
    • 模板
  • 标准库,例如
    • C库头
    • 基本的iostreams
    • 基本STL
  • 使用库(标题,链接)
  • 他们将使用Linux,所以
    • 基本的Linux控制台命令
    • gcc以及如何解释其错误消息
    • Makefile和autotools
  • 基本调试器命令
  • 他们询问的任何话题

在课程中,每个人使用新引入的功能单独编写,编译,运行和调试简单程序.这是最好的学习方式吗?

您认为哪些主题最重要?
应添加或删除哪些主题?
哪些主题在短时间内无法充分涵盖?

c++

11
推荐指数
2
解决办法
3041
查看次数

平滑地连接两条Bézier曲线(C2连续)

(这个问题的后续行动.)

给定一系列三次Bézier曲线,如何最小化它们以使它们以C2连续方式连接?

输入:

  • 曲线P与控制点P0,P1,P2,P3
  • 曲线Q随控制点Q0,Q1,Q2,Q3
  • 如果它有帮助,你可以假设它们已经是C1连续的.

约束:

  • C0连续性: P3 = Q0
  • C1连续性: P2 - P3 = Q0 - Q1
  • C2连续性: P1 - 2*P2 + P3 = Q0 - 2*Q1 + Q2
  • 修改曲线尽可能接近原始曲线P和Q.

math graphics bezier continuous

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

环路终止条件

这些for循环是算法形式正确性证明的第一个基本例子.它们具有不同但等效的终止条件:

1   for ( int i = 0; i != N; ++i )

2   for ( int i = 0; i < N; ++i )
Run Code Online (Sandbox Code Playgroud)

后置条件中的区别变得明显:

  • 第一个给出i == N了循环终止后的有力保证.

  • 第二个只给出了i >= N在循环终止后的弱保证,但你会想到这一点i == N.

如果由于任何原因将增量++i更改为类似的内容i += 2,或者如果i在循环内部进行了修改,或者如果N是负数,则程序可能会失败:

  • 第一个可能陷入无限循环.它在出现错误的循环中提前失败.调试很简单.

  • 第二个循环将终止,并且稍后由于您的错误假设,程序可能会失败i == N.它可能会远离导致错误的循环失败,从而难以追溯.或者它可以默默地继续做一些意想不到的事情,这更糟糕.

您更喜欢哪种终止条件,为什么?还有其他考虑因素吗?为什么许多知道这一点的程序员拒绝应用它?

language-agnostic conditional correctness for-loop

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

在我的控件之外更改HTML页面上的Javascript

我正在使用我无法控制的HTML页面.它在内联<script>标记中定义了一个Javascript函数,并将其调用<body onload="...">:

<html>
...
<body onload="init()">
<script type="text/javascript" language="javascript">
    function init() {
        ...
    }
</script>
...
Run Code Online (Sandbox Code Playgroud)

如何在调用之前更改该功能?我曾尝试使用Greasemonkey修改脚本或在其后插入另一个脚本来覆盖该函数,但它似乎没有任何效果.

javascript greasemonkey

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