Content deleted Content added
→ColdFusion Markup Language (CFML): lang="cfc" |
|||
(5 intermediate revisions by 2 users not shown) | |||
Line 33:
<syntaxhighlight lang="cpp">
import std;▼
class Point {
private:
Line 68 ⟶ 66:
== Memory organization ==
In Java, C#, and VB .NET, the constructor creates reference type objects on the heap, whereas primitive types (such as <code>int</code>, <code>double</code>, etc.) are stored on the [[Stack-based memory allocation|stack]] (though some languages allow for manually allocating objects on the stack through a <code>stackalloc</code> modifier). VB .NET and C# also allow the use of the <code>new</code> operator to create value type objects, but these value type objects are created on the stack regardless of whether the operator is used or not. In these languages, object destruction occurs when the object has no references and then gets destroyed by the garbage collector.
In C++, objects are created on the stack when the constructor is invoked without the <code>new</code> operator, and created on the heap when the constructor is invoked with the <code>new</code> operator (which returns a pointer to the object). Stack objects are deleted implicitly when they go out of scope, while heap objects must be deleted implicitly by a destructor or explicitly by using the
== Language details ==<!-- see also Category:Programming language comparisons -->
Line 87 ⟶ 83:
<syntaxhighlight lang="cpp">
▲import std;
class PolarPoint {
private:
Line 102 ⟶ 100:
PolarPoint a;
PolarPoint b(3);
PolarPoint c(5, std::numbers::pi / 4);
</syntaxhighlight>
Line 176 ⟶ 174:
'''Cheese.cfc'''
<syntaxhighlight lang="
component {
// properties
Line 190 ⟶ 188:
Create instance of a cheese.
<syntaxhighlight lang="
myCheese = new Cheese( 'Cheddar' );
</syntaxhighlight>
Line 196 ⟶ 194:
Since ColdFusion 10,<ref>[https://wikidocs.adobe.com/wiki/display/coldfusionen/cfcomponent CFComponent]</ref> CFML has also supported specifying the name of the constructor method:
<syntaxhighlight lang="
component initmethod="Cheese" {
// properties
Line 322 ⟶ 320:
public X() { // Non-parameterized constructor
this(1); // Calling of constructor
System.out.println("
}
public X(int a) { // Parameterized constructor
System.out.println("
}
}
Line 378 ⟶ 376:
A constructor taking zero number of arguments is called a "no-arguments" or "no-arg" constructor.<ref>{{cite web|url=http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html|title= Providing Constructors for Your Classes |publisher=Oracle Corporation|date=2013|access-date=2013-12-20}}</ref>
=== JavaScript/TypeScript ===
As of ES6, [[JavaScript]] has direct constructors like many other programming languages. They are written as such
<syntaxhighlight lang="javascript">
class FooBar {
constructor(baz) {
this.baz = baz;
}
}
</syntaxhighlight>
Line 392 ⟶ 390:
<syntaxhighlight lang="javascript">
const foo = new FooBar('7');
</syntaxhighlight>
Line 399 ⟶ 397:
<syntaxhighlight lang="javascript">
function FooBar (baz) {
this.baz = baz;
}
</syntaxhighlight>
This is instantiated the same way as above.
The [[TypeScript]] equivalent of this would be:
<syntaxhighlight lang="typescript">
class FooBar {
baz: string;
constructor(baz: string) {
this.baz = baz;
}
}
const foo: FooBar = new FooBar('7');
</syntaxhighlight>
=== Object Pascal ===
|