假设一个类被定义为
class A {
//.....
};
Run Code Online (Sandbox Code Playgroud)
现在我正在创建两个对象
A a,b;
Run Code Online (Sandbox Code Playgroud)
按照什么顺序a和b创造的呢?它是由标准定义的吗?
其他具有自动变量声明的语言(如Perl)具有严格模式.
通过激活此严格模式,需要变量声明,并且只要您尝试使用未声明的变量,Perl就会抛出错误.
PHP提供任何类似的功能吗?
我很好奇C++中不同的常量声明和定义选项的好处/坏处.在最长的时间内,我刚刚在类定义之前将它们声明为头文件的顶部:
//.h
const int MyConst = 10;
const string MyStrConst = "String";
class MyClass {
...
};
Run Code Online (Sandbox Code Playgroud)
虽然这污染了全局命名空间(我知道这是一件坏事,但从来没有找到一个清单,说明为什么它不好),常量仍将限定在各个翻译单元,因此不包含此标题的文件将无法访问这些常量.但是如果其他类定义了一个同名的常量,你就可以获得名称冲突,这可能是一件坏事,因为它可能是一个可以重构的区域的良好指示.
最近,我决定在类定义本身内部声明类特定常量会更好:
//.h
class MyClass {
public:
static const int MyConst = 10;
...
private:
static const string MyStrConst;
...
};
//.cpp
const string MyClass::MyStrConst = "String";
Run Code Online (Sandbox Code Playgroud)
常量的可见性将根据常量是仅在类的内部使用还是使用该类的其他对象所需来调整.这就是我现在认为是最好的选择,主要是因为你可以将内部类常量保持为类的私有,而使用公共常量的任何其他类都可以更详细地引用常量的来源(例如MyClass: :MYCONST).它也不会污染全局命名空间.虽然它确实不利于在cpp文件中要求非整数初始化.
我还考虑将常量移动到它们自己的头文件中并将它们包装在命名空间中,以防其他类需要常量,而不是整个类定义.
只是寻找意见和可能还有其他选择我尚未考虑过.
在JavaScript中声明本地(内部)函数时,有两个选项:
使用var关键字声明,分配给变量:
(function() {
var innerFunction1 = function() { ... };
innerFunction1();
}());
Run Code Online (Sandbox Code Playgroud)
仅使用function关键字声明,而不指定给变量:
(function() {
function innerFunction2() { ... };
innerFunction2();
}());
Run Code Online (Sandbox Code Playgroud)
我可以看到第二个的一个优点:函数可以在调用它的代码下面声明,因此更容易将私有函数与实际执行的代码分开.
哪个更好,为什么?
为什么第一次if编译好,第二次失败?
if(proceed) {int i;} // This compiles fine.
if(proceed) int i;// This gives an error. (Syntax error on token ")", { expected after this token)
Run Code Online (Sandbox Code Playgroud) 我正在学习python,虽然我认为我得到了Python的整个概念和概念,但今天我偶然发现了一段我并不完全理解的代码:
假设我有一个应该定义Circles但缺少一个body的类:
class Circle():
pass
Run Code Online (Sandbox Code Playgroud)
由于我没有定义任何属性,我该怎么做:
my_circle = Circle()
my_circle.radius = 12
Run Code Online (Sandbox Code Playgroud)
奇怪的是Python接受上述语句.我不明白为什么Python没有引发undefined name error.我明白通过动态类型我只需要随时将变量绑定到对象,但是类中是否不radius存在Circle允许我这样做的属性?
编辑:你的答案中有很多精彩的信息!谢谢大家的所有精彩答案!遗憾的是我只能将一个标记为答案.
在w3schools写道:
如果声明变量而不使用"var",则变量始终变为GLOBAL.
在函数内声明全局变量是否有用?我可以想象在某个事件处理程序中声明一些全局变量,但它有什么用呢?更好地使用RAM?
我已经写了一段时间的java,今天我遇到了以下声明:
public static void main(String... args) {
}
Run Code Online (Sandbox Code Playgroud)
注意数组声明中的"点点点",而不是通常的括号[].显然它有效.事实上,我写了一个小测试,并验证它的工作原理.所以,我拉了java语法,看看这个参数声明的语法在哪里,但没有找到任何东西.
所以对那里的专家来说,这是如何工作的?它是语法的一部分吗?另外,虽然我可以像这样声明函数,但是我不能像这样在函数体内声明一个数组.
无论如何,你知道任何有这个记录的地方.这是好奇心,也许不值得投入任何时间,但我很难过.
为什么以及如何 __attribute__在GNU C程序中使用?
在Eclipse SVN项目中,我遇到了问题; 当我试图打开一个类的声明时,我收到了这个错误:
Problems opening an editor Reason : projectname does not exist.
Run Code Online (Sandbox Code Playgroud)
重构也行不通.
我在网上搜索并尝试了所有找到的解决方案,但没有任何帮助.我已经下载了不同的Eclipse和Java版本并切换到一个干净的工作区,但我仍然遇到了问题.
如何解决我的问题或我可以尝试哪种解决方案?
declaration ×10
java ×3
c++ ×2
function ×2
javascript ×2
variables ×2
arrays ×1
attributes ×1
block ×1
closures ×1
constants ×1
eclipse ×1
gcc ×1
if-statement ×1
php ×1
python ×1
python-3.x ×1