构造函数初始化语句!!!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace nange_1
{
    class A
    {
        readonly  int Amyint_1 = 3;
        readonly  int Amyint_2 = 4;
        public string name;
        public int age;
        private A()            //私有构造函数执行其他构造
       {                       //函数共用的初始化
            Amyint_1 = 5;
            Amyint_2 = 6;

            Console.WriteLine("调用无参的构造函数{0} {1}", Amyint_1, Amyint_2);
        }
        public A(string str,int k):this()
        { name = str;
          age =k;
          Console.WriteLine("调用有一个参数的构造函数 name:{0} {1}", name,age);
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            A  objB = new A("江涛",23);

            Console.ReadLine();
        }

    }
}
/*这种语法很有用的另一种情况是,一个类有好几个构造函数,并且他们都需要在对象构造的过程开始时执行一些公共的代码。对于这种情况,可以把公共代码提取出来作为一个构造函数
,被其他的所有构造函数作为构造函数初始化语句使用。减少了重复的代码!!你可能会觉得还可以声明一个方法来进行这些公共的初始化,让所有的构造函数调用来调用这个方法,由于种种
原因这不是一个好的办法,首先编译器知道方法是一个构造函数后会进行一些优化。其次,有时候一些事情必须在构造函数中执行,在其他一些地方则不行比如readonly字段!*/
时间: 2024-10-29 19:11:14

构造函数初始化语句!!!的相关文章

构造函数初始化

参考:c++ primer p385 构造函数的名字与类的名字相同,且不能返回指定类型 构造函数可以被重载,只要构造函数的形参表是唯一的 构造函数初始化有两种方式,一种是使用初始化列表,一种是在构造函数的函数体内对数据成员赋值 初始化列表: 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式: Sales_item::Sales_item(const string &book): isbn(book), units_sold(0), re

构造函数初始化列表和构造函数体内赋值

#include <iostream> using namespace std; class A{ public: A(int a,string str) { m_a = a; m_str = str; } //A(int a,string str):m_a(a),m_str(str){} void print() { cout << m_a << ' '<< m_str<< endl; } private: int m_a; string m_

review——C# (2)对象初始化语句

FROM P104 对象初始化语句扩展了创建语法,在表达式的尾部放置了一组成员初始化语句.这允许你在创建新的对象实例时,设置字段和属性的值. 该语法有两种形式,如下所示,一种形式包括构造函数的参数列表,另一种不包括.注意,下面的第一种形式甚至不适用括起参数列表的圆括号. 1 new Typename { FieldOrProp=InitExpr,FieldOrProp=InitExpr,--} 2 new TypeName(ArgList) { FieldOrProp = InitExpr, F

[Effective Modern C++] Item 6. Use the explicitly typed initializer idiom when auto deduces undesired types - 当推断意外类型时使用显式的类型初始化语句

条款6 当推断意外类型时使用显式的类型初始化语句 基础知识 当使用std::vector<bool>的时候,类型推断会出现问题: std::vector<bool> features(const Widget& w); // OK bool highPriority = features(w)[5]; processWidget(w, highPriority); // ERROR auto highPriority = features(w)[5]; processWid

构造函数初始化器

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 {     class Program     {         static void Main(string[] args)         {             cat c = new cat(

C++构造函数初始化列表与赋值

C++中类的初始化操作一般有四个部分组成: 1.构造函数初始化列表 2.构造函数体内赋值 3.类外部初始化 4.类声明时直接赋值 对于内部数据类型(char,int,float...),构造函数初始化列表和构造函数体内赋值,基本上没多大区别,效率差异也不大,但两者不能共存: class Student { public: Student(char *name, int age): //A初始化列表 m_name(name), m_age(age) { } Student(char *name,

const成员或者引用成员必须使用构造函数初始化列表的方式

#include<iostream.h> class A { const int a; int b; }; void main() { A obja; }编译出现如下错误:error C2512: 'A' : no appropriate default constructor available;如果将const去掉就没错了! #include<iostream.h> class A { public: const int a; int b; A(int x):a(x){} };

构造函数初始化列表

构造函数初始化列表有时是必要的.虽然构造函数分为初始化和计算阶段,使用初始化构造函数列表效率要高一些,这是其一,而且有些情况下必须使用,下面是一例, 1 class Foo 2 { 3 public: 4 Foo(int x, int y): a(x), b(y) {} 5 6 private: 7 int a; 8 int b; 9 }; 10 11 class Bar 12 { 13 public: 14 Bar(): foo(10, 10) {} 15 private: 16 Foo fo

[c++基本语法]——构造函数初始化列表

c++构造函数初始化成员变量列表: 1 #pragma once 2 class Node 3 { 4 public: 5 int data; // 权值 6 Node *parent; // 父节点 7 Node *left; // 左子节点 8 Node *right; // 右子节点 9 public: 10 // 该段代码是c++的基本语法中的“构造函数初始化成员变量列表” 11 Node(void):data(-1),parent(NULL),left(NULL),right(NULL