class human { public: string name = "小明"; int age = 18; }; 不是说类内只能定义吗,为什么可以定义后直接用=赋值
时间: 2024-04-06 16:28:50 浏览: 13
在C++中,类内可以直接对数据成员进行初始化或直接赋值。这种写法被称为成员初始化列表或默认成员初始化。成员初始化列表可以在构造函数中使用,用来对类的数据成员进行初始化。而默认成员初始化则会在对象创建时自动进行,不需要显式地调用构造函数。
在这个例子中,类human的数据成员name和age被直接初始化为默认值,因此在创建对象时会自动进行初始化。这种写法可以简化代码,但是可能会影响代码的可读性和可维护性。因此,在实际的开发中,建议使用成员初始化列表来对数据成员进行初始化,以提高代码的可读性和可维护性。
相关问题
class human { public: string name = "小明"; int age = 18; };为什么可以给age直接复制
在C++中,类中的数据成员默认是私有的(private),但是在类中使用关键字public声明的成员是可以被外部访问的。在这个例子中,age被声明为public,因此可以被外部直接访问和修改。因此,可以在外部对age进行直接赋值。但是,为了保证程序的健壮性和安全性,一般建议将数据成员声明为私有的,并提供公有的接口函数来对其进行访问和修改。
class human { public: string name = "小明"; int age = 18; };为什么没用构造函数复制
在这个例子中,类human中并没有定义构造函数。如果一个类没有定义构造函数,编译器会默认生成一个无参构造函数(也叫默认构造函数),用来创建该类的对象。当我们创建human类型的对象时,编译器会自动调用该类的默认构造函数,从而初始化类的数据成员name和age的默认值。因此,在这个例子中,类human的对象可以直接使用默认构造函数进行初始化,而不需要显式地定义构造函数。