1 类的对象进行初始化
直接实例化对象,使用对象调用赋值
例如:
People people;
people.num=10;
main2.cpp
//给成员变量赋值
//直接实例化对象,使用对象调用赋值
class MyClass {
public:
// 成员函数用于显示成员变量的值
void display() {
cout << "Integer variable: " << integerVar << endl;
cout << "Float variable: " << floatVar << endl;
}
int integerVar;
float floatVar;
};
int main() {
// 创建对象时默认构造函数被调用,成员变量被赋予指定的值
MyClass obj;
obj.integerVar = 20;
obj.floatVar = 3.56;
obj.display();//20 3.56
return 0;
}
2 使用构造函数
例如:
People(int a)
{
num=a; //用a来初始化类的成员num
}
3 通过类的构造函数的初始化列表的形式
格式:
类名 ([参数列表]):成员变量1(初始值),成员变量2(初始值),.......
{
//代码
}
例如:
People():num(10) //创建对象时,对类的成员变量num进行初始化为10
{
}
4 练习给成员变量赋值
test3.cpp
#define _CRT_SECURE_NO_WARNINGS
#include "iostream"
using namespace std;
//练习给成员变量赋值
class test {
public:
char* name;
//char name[12];
int age;
//构造函数,为name开辟空间
test() {
name = new char[12];
}
//打印
void Print(test &obj) {
cout << "name=" << obj.name << endl;
cout << "age = " << obj.age << endl;
}
// //析构函数,释放name
~test() {
delete[] name;
}
};
int main()
{
//方法一直接使用对象调用赋值
test t1;
strcpy(t1.name,"zhangsan");
t1.age = 18;
t1.Print(t1);
return 0;
}
//方法二无参构造
class test {
public:
char* name;
//char name[12];
int age;
//构造函数
test() {
name = new char[12];
strcpy(name, "zhangsan");
age = 18;
}
//打印
void Print(test& obj) {
cout << "name=" << obj.name << endl;
cout << "age = " << obj.age << endl;
}
// //析构函数,释放name
~test() {
delete[] name;
}
};
int main()
{
//方法二无参构造
test t1;
t1.Print(t1);
return 0;
}
//方法三,无参构造,带默认初始值
class test {
public:
char* name;
//char name[12];
int age;
//构造函数
//因为name还没有开辟空间,所以这里默认初始值name无法完成赋值,只能删掉name
//从参数里给name赋值
test(const char* name1) :age(22) {
name = new char[12];
strcpy(name, name1);
}
//打印
void Print(test& obj) {
cout << "name=" << obj.name << endl;
cout << "age = " << obj.age << endl;
}
//析构函数,释放name
~test() {
delete[] name;
}
};
int main()
{
test t1("lisi");
t1.Print(t1);
return 0;
}
//方法四,使用有参构造函数
class test {
public:
char* name;
//char name[12];
int age;
int* score;
//构造函数
//因为name还没有开辟空间,所以这里默认初始值name无法完成赋值,只能删掉name
//从参数里给name赋值
test(const char* name1,int age1,int score1) {
//切记,字符串赋值不要使用等号,
name = new char[12];
score = new int;
strcpy(name, name1);
age = age1;
*score = score1;
}
//打印
void Print(test& obj) {
cout << "name=" << obj.name << endl;
cout << "age = " << obj.age << endl;
cout << "score = " << *obj.score << endl;
}
//析构函数,释放name
~test() {
delete[] name;
delete score;
}
};
int main()
{
test t1("wangwu",24,99);
t1.Print(t1);
return 0;
}