问题标签 [member-access]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 编译器生成的默认构造函数会公开吗?
当我写一堂课Widget.java
编译器生成的构造函数是公共的还是默认的?
公众就像
而默认类似于
c++ - 通过指向对象的指针访问成员
在堆栈上,编译器可以自由地进行很多优化,因为上下文是静态的并且在编译时是已知的,但是在处理对动态分配的对象的访问并且通常访问“通过引用”时,上下文是未知的,所以在逻辑上在这种情况下,成员访问归结为取消引用通过添加对象基地址和该成员的偏移量得出的内存地址。或者是吗?我对此很陌生,所以在这一点上,我只是在猜测,可能会遗漏很多细节。
例如,我注意到如果我在使用堆栈成员(并使用运算符)时实现+
运算符,则汇编代码与常规运算符创建的相同,因此似乎已知指向编译时已知值的指针are 正在被优化以排除额外的取消引用(和复制),并且函数内部的间接被内联为对堆栈对象的直接访问。这是否意味着编译器“足够好”能够优化通过从堆栈上的对象基地址的常量值偏移间接实现的访问器,就好像使用结构成员访问来获取该值一样?void add(int * a, int * b, int * r);
&
+
add()
c - 将结构数组发送到函数时出现访问问题
我是一个新的 C 程序员,所以你必须原谅我缺乏知识。慢慢地,但我肯定在进步。我想知道为什么在将结构的成员发送到打算修改它们的函数后,我无法访问它们。此问题出现在下面显示的代码中。基本上,我的程序分析 XML 文档并寻找某些模式来提取文本。在我的主要功能中,我制作了 struct:artinfo artIn[128] = {};
在我的头文件中定义为:
在实例化它并使用 memset 清除它之后,我继续将它发送到另一个函数,该函数将提取文本并打算将其放回结构中。功能如下图。
一切似乎都很好,直到它到达:strcpy((*artIn[0]).title, buffer);
和printf("The title is: %s\n", ((*artIn[0]).title);
语句。我总是收到错误和堆栈转储 - 即 1 [main]Parst_Text 7296 open_stackdumpfile: Dumping stack trace to Parse_Text.exe.stackdump 我不确定我做错了什么 - 我认为这是访问成员的调用struct 数组,好像我删除了这些语句,程序运行没有缺陷。我不确定我是否只是在堆栈上放了太多东西,或者如何使用堆栈转储来找出问题所在。感谢所有建议,但请保持建设性。谢谢。另外请让我知道我是否超载了这个问题,因为我不确定要提供多少细节。
编辑:根据请求,这里是调用阅读器解析器的函数
}
c - C 联合和同时分配给成员
在下面的代码中
我知道 union 一次只能保存一个值。因此,当我分配 char 值时,int 将被覆盖,n 然后当我分配 floatValue 时,char 将被覆盖。所以我期待 int 和 char 变量有一些垃圾值,float 变量有 20.200000,因为它是最后一个要分配的值。但以下是我在 VS Express 和 gcc 上得到的输出
无法理解为什么浮点值会改变?
java - 我们如何在其外部类中访问内部类的非静态成员?
就像上面的学生类一样,有一个内部类 Subject 包含科目名称和相应分数的信息,所以如果我想打印所有科目名称和相应的分数以及学生的详细信息,我们该怎么做?
c# - C# 编译器是否对 const 类型成员的颜色规则错误?
好的,所以 C# 语言规范有一个关于成员及其类型具有相同名称的规则的特殊部分(旧版本链接) 。Color Color
著名的大师 Eric Lippert曾经在博客上写过它。
我在这里要问的问题在某种意义上(不)与在线程Circular definition in a constant enum中提出的问题完全相同。如果你愿意,你可以去投票赞成其他问题。
现在我的问题。考虑这段代码:
这里的要点是,在上述每种情况下,最右边的标识符Color
可以指代enum
类型,也可以指代具有相同名称的类成员。但是Color Color
上面提到的规则意味着我们应该看看成员(Brown
)是静态的还是非静态的。由于在这种情况下它是静态的,我们应该Color
相应地解释。
我明显的主要问题:为什么这不适用于const
类型成员?这是无意的吗?
(显然,说N.Color.Brown
(N
是名称空间)“修复”它;我不是在问这个!)
旁注:使用局部变量const
,上述异常不存在:
c++ - 在 C++ 中传递结构时的可选逻辑
我也是编程新手,正在尝试将结构数组和“选项”传递给函数。然后我希望函数能够操作结构数组中的数据。
option 参数是一个整数,它将指定要操作的结构的哪一部分。
- 操纵 x --- 选项 = 0
- 操纵 y --- 选项 = 1
- 操纵 z --- 选项 = 2
这方面的一个例子如下所示。该函数采用结构数组并对数据点指定的数据点进行 3 点移动平均。我遇到的问题是我正在尝试构建的程序在每个结构中都有 50 多个成员,因此手动写出每个 if 语句真的很乏味。我要问的是是否有更优雅的解决方案???
c++ - C++ 运算符 ->* 和 .*
再会,
我遇到了这个问题,但我对维基百科上列出的“成员指向的对象......”类型运算符特别感兴趣。
我从未在实际代码的上下文中看到过这一点,所以这个概念对我来说似乎有些深奥。
我的直觉说它们应该按如下方式使用:
但这不会编译,因为p
未声明。(见示例)
谁能提供一个在 C++ 中使用 operator->* 和/或 .* 的真实示例?
ruby - 类成员变量和方法名冲突
我正在使用第 3 方库,我正在尝试访问类成员变量,但不幸的是还有一个同名的方法。
不幸的是,我无法更改它,因为它是第 3 方。
c++ - 设置(属性)类的单个/多个成员的最佳实践
我有一个类,其中包含一些可以从外部源修改的成员:
该示例已简化,我的代码中有更多成员。
现在改变的最佳做法是什么
- 单身的
- 多个(一次)
- 所有成员(一次)
这个班的?
我的代码需要处理所有情况,尽管内部情况 1. 将是通常情况。大多数情况下,它应用于单个 CNode,但也可能应用于节点数组。
我知道两种可能的解决方案都不能真正让我满意:
- 为每个变量设置和获取:
Pro:
每个变量都可以独立于其他成员进行修改。
轻松为多个 CNode 设置相同的值。
魂斗罗:
很多设置&gets;
如果添加了新变量,则还需要添加新的 set&get。
如果在许多 CNode 中更改一个变量,这将最有效
- 创建一个包含所有可修改变量的 CProperties 类:
Pro:
父类中的一个 set&get - 可以添加/删除属性,而无需修改 set&get。
这也减少了我的 API 中处理用户输入的方法数量。
相反:
设置单个变量需要获取当前的 CProperties,因此其他值不会被修改。
如果在单个 CNode 中一次更新多个/所有变量,这将最有效。
像这样:
这将是最懒惰的版本(通过代码创建工作),但对我来说也是最讨厌的版本,因为设置单个变量需要首先获取当前属性,修改单个变量,然后将完整的属性类设置回节点。
特别是在修改多个 CNodes 中的单个变量的情况下,这似乎是一个糟糕的解决方案。
在我的情况下,执行时间和(大小)开销大多无关紧要。(这确实是我反对惰性版本的唯一好论据)
相反,我正在寻找干净、可理解、可用的代码。
我可以考虑采用动态方法的第三种可能的解决方案:
一个 set 方法有一个对象作为参数,该对象可能包含一个或多个需要修改的值。然后,API 只有一个 set 方法,如果 CProperties 更改,则不需要任何修改。相反,CNode 类中需要一个解析方法。这种解析方法仍然需要针对 CProperties 中的每次更改进行更新,尽管我相信这也应该可以通过模板通过编译器解决。
我的问题是:
我的用例还有其他可能的解决方案吗?
哪种方法最明智?