小编Pau*_*arr的帖子

访问c ++父类的私有成员

我有一个基本的C++问题,不幸让我感到困惑.最近我遇到了一篇文章,该文章使用向下转换来使用向下转换来访问类的私有成员.我的问题是它为什么有效?

鉴于我有一个父类P,其私有成员m_p的类型为dummy*,那么使用的方法是创建一个hack类hackP,如下所示:

class hackP: public P {
public:
dummy *m_p;
};
Run Code Online (Sandbox Code Playgroud)

显然,使用像这样的代码片段可以访问class P私有成员m_p

P parent = ...;
hackP *hp = (hackP*)&parent;
// access parent m_p as hp->m_p
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

c++ private class member undefined-behavior

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

为什么链接,样式和脚本元素被浏览器错误地从头到脚移动?

问题:当我在head元素中放置链接,样式或脚本元素时,浏览器似乎错误地将这些元素移动到body元素中,如通过遍历JavaScript节点树所检测到的那样.错误地我的意思是他们违反了规范.例如http://www.whatwg.org/specs/web-apps/current-work/#the-link-element,其中说明:

注意:如果使用rel属性,则元素仅限于head元素.

这是我的代码

<!DOCTYPE html>
<html>
<head>
    <title>head test</title>
    <meta charset="utf-8" />.
    <link href="sample.css" rel="stylesheet" /> 
    <script></script>
    <style>p{font-family:"Times New Roman";font-size:20px;}</style>
</head>
<body>
    <p>test paragraph</p>
<script type="text/javascript">
    function htmlTree(obj){
        var obj = obj || document.getElementsByTagName('html')[0];
        var str = "<ul><li>" + obj.tagName;
        if (obj.hasChildNodes()) {
            var child = obj.firstChild;
            while (child) {
                if (child.nodeType === 1) {
                    str += htmlTree(child)
                }
            child = child.nextSibling;
        }
    }
    str += "</li></ul>";
    return str;
}
window.onload=document.write(htmlTree());
Run Code Online (Sandbox Code Playgroud)

这是结果:

HTML
    HEAD
        TITLE
        META
    BODY
        LINK …
Run Code Online (Sandbox Code Playgroud)

browser html5 dom

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

标签 统计

browser ×1

c++ ×1

class ×1

dom ×1

html5 ×1

member ×1

private ×1

undefined-behavior ×1