I am trying to understand the syntax of C c = new C();
I read the new
keyword deploys, initializes state variables, runs the constructor, sets nonce to one, and returns address of new instance.
I read that a state variable a
has a 0-ary public getter function a()
that returns the value of a
.
Questions:
- What "is" the getter function of a contract?
- Why does
new
act on the getter function? - In
C c = new C();
why do we need the firstC
to define the variable?
Best Answer
A contract doesn't have a "getter" function. You could read
C()
as calling the contract's constructor (but the call isn't like regular functions).The part
new C()
is the solidity syntax to deploy theC
contract. The constructor accepts parameters so they can be passed like thisnew D(param1, param2, param3)
.The requirement to declare the type returned in the assignment
C c = ...
is for security reasons. A few versions back solidity supportedvar c = ...
but there were a few contracts with subtle bugs due to the wrong type deduced by the compiler.