#include <lontern.h>
typedef struct _administer_data {
char account[20];
char password[20];
}administer_data;
class administer
{
private:
administer_data now_user;
public:
administer(administer_data user);
administer_data get_now_user();
administer_data& get_now_user2();
administer_data* get_now_user3();
};
administer::administer(administer_data user)
{
now_user = user;
}
//无引用
administer_data administer::get_now_user()
{
return now_user;
}
//有引用
administer_data& administer::get_now_user2()
{
return now_user;
}
//指针法
administer_data* administer::get_now_user3()
{
return &now_user;
}
int main() {
administer ad({ "aaa", "123456" });
cout << ad.get_now_user().password << endl; //123456
//无引用&指针
strcpy(ad.get_now_user().password, "abc123");
cout << ad.get_now_user().password << endl; //123456 修改失败 没有使用引用的话 ad.get_now_user() 会创建一个新的user,地址和原本的不同,所以并不会修改原来的
//引用
strcpy(ad.get_now_user2().password, "abc123");
cout << ad.get_now_user().password << endl; //abc123 修改成功
//指针-指针直接取值
strcpy((ad.get_now_user3())->password, "aaa456");
cout << ad.get_now_user().password << endl; //aaa456 修改成功
//指针-解引用得到结构体再取值
strcpy(( * (ad.get_now_user3())).password, "bbb123");
cout << ad.get_now_user().password << endl; //bbb123 修改成功
}
C++无引用&引用&指针修改结构体内容demo
最新推荐文章于 2024-09-15 11:40:06 发布