关于C语言结构体构造函数初始化的问题?

刚刚学会结构体的构造函数,但是在做题中发现不知道如何赋值字符串,请问如何构造可以对字符串进行赋值的构造函数,举个小例子,将代码截下图谢谢(最好不要用strcpy函数,最好使用构造函数的简化形式)

#include<iostream>
#include<string>
using std::cout;
using std::string;
class A{
string a;
public:
A(string ab="1wggg"){a=ab;}
string geta(){return a;}
};
void main()
{
A b;
cout<<b.geta();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-12-06
结构体定义变量及初始化

当我们定义了结构体类型之后,可以使用结构体类型来定义变量,定义变量的方式与基本数据类型定义变量一样。假设我们定义了如下的结构体类型:

//定义结构体类型

struct reader

{

//定义结构体的成员;

char name[32];

int age;

int number;

};

我们可以用该结构体类型来定义变量,如下:

struct reader r1; //定义结构体变量

我们可以在定义结构体变量的时候,对其进行初始化,如下:

//定义结构体变量, 并初始化;

struct reader r1 = {"www123", 100, 199};

完整的测试例子如下:

程序运行结果如下:

可以看到,我们在定义变量r1的时候,在后面接着赋值运算符“=”,然后,接着需要赋值的数据。在大括号中存放赋值的数据,每个数据之间是有逗号“,”分隔开。

我们还可以在定义结构体类型的时候就定义变量,同时对其进行初始化,如下:

//定义结构体类型

struct reader

{

//定义结构体的成员;

char name[32];

int age;

int number;

}r1, r2;

此时,在定义struct reader结构体类型的时候,同时定义了变量r1和r2。而且,可以在定义变量的时候初始化,如下:

//定义结构体类型

struct reader

{

//定义结构体的成员;

char name[32];

int age;

int number;

}r1 = {"AAABBB", 99, 886}, r2 = {"www123", 100, 199};

此时,定义struct reader结构体类型的时候,定义了变量r1和r2,而且,给变量r1、r2初始化数据。程序测试代码如下:

程序运行结果如下:

可以看到,我们在定义sruct reader结构体类型的时候,定义了变量r1和r2,并且对它们进行了初始化。

在定义结构体类型的过程中,我们可以省略“结构体类型名”,但是,这样定义的结构体类型就没有名称了,只能够在定义结构体类型的时候定义变量。例如:

//定义结构体类型

struct

{

//定义结构体的成员;

char name[32];

int age;

int number;

}r1, r2 = {"www123", 100, 199};

此时,定义了一个结构体类型,但是,该结构体类型没有名称,所以,只能够在定义结构体的时候,定义变量。可以在定义变量的时候进行初始化。

这种结构体定义类型的方式不是很推荐使用,我们只需要知道有这样的定义方式就可以了。

在写代码的时候,我们都更应该给每个变量有一个明确、准确的类型名称。可以通过类型名称和变量名称,就可以知道定义这个类型和变量的一样。这样的代码才是优秀的代码。
相似回答